7

場合によっては、シーケンス番号だけが異なる類似の行をファイルに挿入する必要があります。例えば、

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();
4

3 に答える 3

12

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

最初の行をコピーして貼り付けます。それで、

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'の交互の行を取得します。

于 2010-10-21T07:04:23.790 に答える
1

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

それを行う別の方法は、マクロを記録することです。runqxはマクロの記録を開始してxを登録yiwし、カーソルの下の単語をヤンクjし、1 行下に移動し、viwp貼り付けCTRLA、新しい数値をインクリメントし、q記録を停止し、@xレジスタxの内容を再生します。

于 2010-10-21T06:50:43.740 に答える
0

この特定のケースでは、マクロを使用できます。この投稿には、シーケンス番号を行う方法についての良い記事があります。

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

于 2010-10-21T06:55:24.080 に答える