.
最後の変更を繰り返します。 2.
最後の変更を2回繰り返します。
しかし、最後の変更の前に変更を繰り返したいと想像してください。 Vimでそれを行うにはどうすればよいですか?
できるとは思わないでください。:help .
を参照してください。ただし、編集用のマクロを記録することはできます。{0-9a-zA-Z"}
(大文字で追加)から選択できるレジスタがたくさんあります。次に、例えばを使用します。編集1の場合は@u
、編集2の場合は@t
など。
" Recording (BEST TIP of ALL)
qq # record to q
your complex series of commands
q # end recording
@q to execute
@@ to Repeat
5@@ to Repeat 5 times
qQ@qq : Make an existing recording q recursive *N*
" editing a register/recording
"qp :display contents of register q (normal mode)
<ctrl-R>q :display contents of register q (insert mode)
" you can now see recording contents, edit as required
"qdd :put changed contacts back into q
@q :execute recording/register q
繰り返すためのその他のヒントについては、これらをご覧ください。
:& last substitute
:%& last substitute every line
:%&gic last substitute every line confirm
g% normal mode repeat last substitute
g& last substitute on all lines
@@ last recording
@: last command-mode command
:!! last :! command
:~ last substitute
:help repeating
この正確な要件に対処するために、 RepeatLast.vimプラグイン を作成しました。これは、最後の5つの変更(移動を含む)を繰り返すための5\.
キーバインディングと、最後の2つのアクションを削除/忘れるための2\D
を提供します。
マクロ記録を常に有効にすることで機能しますが、これはすべての人にとって望ましいとは限りません。しかし、それを受け入れることができれば、99%のユースケースで機能します。
最新バージョン: https://github.com/joeytwiddle/RepeatLast.vim (フィードバックしてください!)
警告:
出力の最初の行が「記録中」のメッセージによって隠されないように、
:set ch=2
してください。意図したとおりに機能しない場合の1%は、通常、次の理由によるものです。
- 速く繰り返されるキーストロークを失うことなく、CursorHoldイベントをゆっくりとトリガーすることの難しさ
- ユーザーがプロンプトに応答しているときに[スペース]キーと[Enter]キーを録音するのは望ましくありません。
q
筋肉をトレーニングして、マクロを先制的に記録することは、長期的にはより良いアプローチかもしれません。 ;-)
Fredrick Philの回答に基づいて、次の例を示します。
マクロの記録
以下に、引用符で囲まれた文字列を含むすべてを削除し、レジスタd
に格納するマクロを記録する方法を示します。文字列を削除するコマンドはda"
。したがって、このコマンドをマクロレジスタdに格納するには、次のようにするだけです。
qdda"q
Qで始まりqで終わることに注意してください。 2番目の文字はレジスタです。この場合は削除用のd
です。しかし、私たちはそれに任意の文字や数字を与えることができたでしょう。残りの文字da"
は私たちのコマンドです。
マクロを使用
マクロが記録されたので、@記号の後にレジスタを使用してマクロを呼び出すことができます。
@d
最後のマクロコマンドを繰り返す
最後に呼び出されたマクロコマンドを再度使用するには:
@@