VIMに同様のラインを挿入しながらキーストロークを最小限に抑えるにはどうすればよいですか?

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

質問

シーケンス番号のみが異なる同様の行をファイルに挿入する必要がある場合があります。例えば、

print "func 1";
print "func 2";
print "func 3";
print "func 4";
print "func 5";

使用 vim, 、[yypppp]を使用して最初の行をコピーして、最後の4行を変更することになります。挿入するラインが増えると、これは本当に遅くなります。

VIMでこれを行うためのより速い方法はありますか?


この例は次のとおりです。

初期状態

boot();
format();
parse();
compare();
results();
clean();

最終状態

print "func 1";
format();
print "func 2";
parse();
print "func 3";
compare();
print "func 4";
results();
print "func 5";
clean();
役に立ちましたか?

解決

マクロを記録します。特定の例のワークフローは次のとおりです。

最初の行をコピーします。それで、

qa       : Start recording macro to register a
yy       : Yank current line
p        : Paste current line in line below
/\d      : Search for start of number (you can skip this command, the next command automagically moves the cursor to the number)
C-A      : Control-A increments the number
q        : Stop recording macro
3@a      : Replay macro 3 times

3つを任意の数字に置き換えることができます。新しい生成を続けます print 増加した数字の行。

2番目の例では、追加するだけです

j        : Moves one line down

後に yy コマンド、交互のコマンドラインを取得するため print's。

他のヒント

それを行うプラグインがあります。例えば、 Visincr. 。数字の列を視覚的に選択し、実行します :I.

それを行う別の方法は、マクロを記録することです。走る qx 登録するためにマクロの記録を開始します バツ, yiw カーソルの下で言葉を引っ張るには、 j 1つの行を下ろすには、 viwp それを貼り付けるには、 Ctrla 新しい番号を増やすには、 q 録音を停止し、次に @x レジスタの内容を再生するには バツ.

この特定のケースでは、マクロを使用できます。シーケンス番号を実行する方法の良い記事があります この郵便受け.

投稿の例を変更して、最初に行全体を書き留めてから、ラインをコピーしてカウンターを更新するマクロを記録する必要があります。

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