27

Vim では、通常、一連のコマンドを何度か繰り返したいと思います。たとえば、5行コメントしたい場合は、次を使用します

I//<Esc>j
.j.j.j.j

最後の「.j」部分を数回繰り返す方法はありますか?

4

6 に答える 6

41

これを行う1つの方法は、キーシーケンスをマクロに割り当ててから、マクロを1回実行してから、@@run-last-macroコマンドを実行することです。例えば:

qa.jq@a@@

マクロを何回繰り返したいかがわかっている場合は4@@、何でも使用できます。

于 2010-07-13T20:23:12.927 に答える
16

繰り返したい行を視覚的に選択し、入力して各行で:normal! .vimを使用できます。.視覚的な選択から始めたので、最終的には次のようになります。

:'<,'>normal! .

ただし、コメントを頻繁に追加および削除する場合は//、次のマッピングが役立つ場合があります。

" add // comment with K
noremap K :s,^\(//\)\=,//,e <BAR> nohls<CR>j
" remove // comment with CTRL+K
noremap <C-K> :s,^//,,e <BAR> nohls<CR>j

を使用5Kして 5 行にコメントすることも、ビジュアル モードを使用して最初に行を選択することも、必要なKすべてのコメントが終わるまでハンマーで叩くこともできます。

于 2010-07-14T00:36:00.640 に答える
12

あなたの特定の例に関して、私はビジュアルブロックモード(でアクセスCtrl-v)を使用して複数行の挿入を行うことを好みます。たとえば、次の行がある場合:

This should be a comment.
So should this.
This is definitely a comment.
Is this a comment? Yes.

一番上の行の一番上の最初の文字に移動し、ヒットCtrl-vしてビジュアルブロックモードに入り、最後の行に移動します(3j3行下に移動するために使用4gするか、4行目に直接移動するために使用するか、単にG最後に移動するために使用します) )、次に入力I// <esc>して、すべての行にコメントを一度に挿入します。

// This should be a comment.
// So should this.
// This is definitely a comment.
// Is this a comment? Yes.

また、ここには多くの言語をサポートする非常に便利なコメンター/アンコメンタープラグインがあります。コメントを手動で挿入/削除するよりも簡単です。

于 2010-07-13T21:07:08.260 に答える
3

あなたの特定の例について。範囲.,.5s#^#//#(これと次の 5 行を実行するため) またはビジュアル ブロック (v を押してから、必要なテキストを選択する) を使用して、その後に:%s#^#//#.

于 2010-07-13T20:26:04.087 に答える
3

それを行う別の方法は、マークを設定し、その範囲で置換を実行することです。

マ
jjjj
メガバイト
:'a,'bs,^,// ,
于 2010-07-13T20:27:50.260 に答える