どのように私は、PythonやRubyなしのVimでカウンタ変数を得ることができますか?

StackOverflow https://stackoverflow.com/questions/895663

  •  23-08-2019
  •  | 
  •  

質問

私は、Python /ルビーが有効になっていません。私の質問:私は頻繁に次のようなものを記述する必要があります:

%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回以上貼り付けるようにします。その後、私はブロック全体をコピーしますし、新しいブロックに入力します。

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

第二のブロックで2008年の2007を置換する。

Vimはちょうど私は、常に手動でラインのそれぞれに1〜12を交換するより良い方法がなければならない把握非常に強力です。

役に立ちましたか?

解決

最初の行を書きます:

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

次に、まだそのライン上ながら、コマンドモードに入るコピーライン(yyp)、最初の数字(CTRL-、書き込ま^A)をインクリメントし、いずれかを移動する のマクロを記録右(l)との文字が他の番号をインクリメントします:

qayyp^Al^Aq

(マクロ記録を開始し、停止するとqで起こることに注意してください。)今、マクロの110回再生します:

110@a

他のヒント

またVIM 7の機能を行うことができます:

:let t=map(range(200801,200815), '"macro(".v:val.");x gzip /home/test/".v:val.".txt;run;"')
:put=t
あなたの処分でのUnix / Linuxのコアユーティリティを使用している場合は、

があります あなたが使用するように慣れている場合は、少なくとも、覚えやすいです方法 ブロックコマンドます:

(1)配列を使用してシーケンスを生成(1)

:r!seq 200801 200812

seqはまた、このように整形することができます:

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

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

(2)Vimのブロックコマンドを使用して、このブロックをダブル: C-vでマーク、ヤンク、置く

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

を挿入します

を参照してください:。多くのため、ブロックワイズ・ビジュアル助ける

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top