6

Python/Ruby を有効にしていません。私の質問: 私は頻繁に次のようなことを書かなければなりません:

%macro(200701);x gzip /home/test/200701.txt;run;
%macro(200702);x gzip /home/test/200702.txt;run;
%macro(200703);x gzip /home/test/200703.txt;run;
%macro(200704);x gzip /home/test/200704.txt;run;
%macro(200705);x gzip /home/test/200705.txt;run;
%macro(200706);x gzip /home/test/200706.txt;run;
%macro(200707);x gzip /home/test/200707.txt;run;
%macro(200708);x gzip /home/test/200708.txt;run;
%macro(200709);x gzip /home/test/200709.txt;run;
%macro(200710);x gzip /home/test/200710.txt;run;
%macro(200711);x gzip /home/test/200711.txt;run;
%macro(200712);x gzip /home/test/200712.txt;run;

%macro(200801);x gzip /home/test/200801.txt;run;
%macro(200802);x gzip /home/test/200802.txt;run;
%macro(200803);x gzip /home/test/200803.txt;run;
%macro(200804);x gzip /home/test/200804.txt;run;
%macro(200805);x gzip /home/test/200805.txt;run;
%macro(200806);x gzip /home/test/200806.txt;run;
%macro(200807);x gzip /home/test/200807.txt;run;
%macro(200808);x gzip /home/test/200808.txt;run;
%macro(200809);x gzip /home/test/200809.txt;run;
%macro(200810);x gzip /home/test/200810.txt;run;
%macro(200811);x gzip /home/test/200811.txt;run;
%macro(200812);x gzip /home/test/200812.txt;run;

Vimでこれを行う簡単な方法はありますか?

私は通常、次のように入力します。

%macro(200701);x gzip /home/test/200701.txt;run;

次に、次のコマンドを発行します。

yy11p10<up>13<right>r2<down>r3<down>r4<down>...

つまり、行をさらに 11 回貼り付けてから、「replace char」コマンドを使用して日付のリストを実行します。次に、ブロック全体をコピーし、新しいブロックに入力します

:s/2007/2008/<enter>12&11<up>12&

2 番目のブロックで 2008 を 2007 に置き換えます。

Vim は非常に強力なので、各行の 1 から 12 を常に手動で置き換えるよりも良い方法が必要だと思います。

4

4 に答える 4

14

最初の行を書きます:

%macro(200701);x gzip /home/test/200701.txt;run;

次に、まだその行にいる間に、コマンド モードに入り、行をコピーし ( )、最初の数字をインクリメントし (ctrl-a、書き込み)、1 文字を右に移動し ( )、他の数字をインクリメントするマクロaを記録します。 :yyp^Al

qayyp^Al^Aq

(マクロの記録の開始と停止は で行われることに注意してくださいq。) マクロ110 回再生します。

110@a
于 2009-05-21T23:03:20.863 に答える
6

Unix/Linux コア ユーティリティを自由に使用できる場合、少なくともブロック コマンドの使用に慣れている場合は、覚えやすい方法があります。

(1) seq(1) を使用してシーケンスを生成する

:r!seq 200801 200812

seq では、次のような書式設定も可能です。

:r!seq -f "\%03.0f"  10 121

パーセント記号はエスケープする必要があります。

(2) このブロックを Vim ブロック コマンドで 2 倍にします: Mark with Cv, yank, put

(3) このブロックの間にテキストを挿入 (または追加): CV でマーク、I で挿入

詳細については、:help blockwise-visual を参照してください。

于 2009-05-22T07:01:21.453 に答える
2

Vimtip#150も参照してください。

これは、テキストのブロックをマークし、マークされたブロックの番号を自動的に増やす方法を説明しています。

于 2009-05-25T11:10:19.807 に答える