web-dev-qa-db-ja.com

emacsの「C-x z」のように、Vimでコマンドを繰り返すにはどうすればよいですか?

Vimでは、編集であるかどうかに関係なく、マクロを最初に記録する先見性がなくても、最後のコマンドを繰り返す方法はありますか?

例えば。 :bnと入力して、もう一度やりたいと言います(間違ったファイルでした)。 .を押すことは明らかにそれをしません。または多分私はgEをやっていて、それを繰り返したいと思います(明らかにgEはタイプするのがちょっとつらいので1回のキーストロークで)。

おそらくいくつかのプラグインがありますか? この質問 に似ています。

(クーラーでさえも、多くのコマンドをマクロにさかのぼってバインドするので、5qa@aまたは何かを入力して最後の5つのコマンドを繰り返すことができます...)

48
johv

コマンドラインコマンドを繰り返すには、@:、通常/挿入モードのコマンドを繰り返すには、.

同じショートカットを使用する場合は、.vimrcに以下のマッピングを追加します。

:noremap <C-P> @:<CR>-Ctrl + Pを前のコマンドラインコマンドにマッピングします。他のコンボをマップできます。

65
Ravikiran

:help repeatingは、典型的な繰り返しコマンド(。、@:など)を提供します。 repeat.vim を試すことができます。それはあなたが探しているものにあなたを近づけるかもしれません。

13
Matt Glover

モーションコマンドの場合、Vimにはメカニズムが組み込まれていません。 FindおよびToコマンド(f/F/t/T)には、;および,を繰り返し、逆順にする。これらのバインディングを拡張して他のモーションコマンドを繰り返すプラグインがいくつかあります。

http://www.vim.org/scripts/script.php?script_id=2174

http://www.vim.org/scripts/script.php?script_id=3665

後者は、;を使用したgEの繰り返しをサポートする必要があります

10
jpnp

「。」のみを使用できます。

例:ファイルの10か所に「abc」があり、5か所の「def」に置き換えたい場合。

手順1:コマンド "/ abc"を入力して、abcの最初の出現箇所を見つける
ステップ2:カーソルが「abc」に移動したら、コマンド「cw」でabcを置き換えて、単語「abc」を取り出します。
ステップ3:置換として「def」と入力し、Enterキーを押してコマンドモードに移動します
ステップ4:このアクションを繰り返すには、コマンド「n」を入力して次のabc およびコマンド「。」を入力します。 コマンドは、前回「abc」を「def」に置き換えたことを記憶しており、ここで同じことを実行します。

8
Manan

@:利便性を高めるためのキー:

:map <F2> @:

繰り返しで使用する方が簡単です。

1
insider