私はVIMを今はかなり定期的に使用していますが、ドット(。)コマンドを使用して前のアクションを繰り返すことはありません。その素晴らしさについて読み続けていますが、意味のある実世界の例を見たことはありません。私とVIMでコーディングする方法についてドット(。)コマンドがいかにすばらしいかを示す実際の例は何ですか?
次に、dotコマンドで実行するいくつかのアクションを示します。
:%s/\<Word\>/replacement/gc
よりも単純なのは、Wordで*
、次にcereplacement<esc>
、次にn.
を繰り返します。 Wordが2回または3回出現する場合、これは適切です。置き換える単語が複数ある場合は、次の単語に移動し、*
を押し、もう一度n.
を押します。<Ctrl-V>jjj<.....
または前にスペースを挿入:<ctrl-v>jjjI<space><esc>....
dd
またはdw
の後、ドットコマンドは別の行/ Wordを削除しますDotコマンドで発生する不思議なことは、番号付きレジスタを使用したコマンドを繰り返すと、次の番号付きレジスタを使用することです(:help redo-register
を参照)。
説明:9行でdd
を実行し、それらを削除した順序で復元したい場合は、"1P........
を実行してください。レジスタ1〜9はVimの削除リングであることに注意してください。 "1P
は最後に削除されたテキストをカーソルの前に挿入し、"2P
は最後に削除された前のテキストを挿入します。
私が使う dw....
多くの場合、一連の単語を最初にメンタルカウントする必要なく削除します。その例では、5dw
の方が文字数は少ないですが、ドットコマンドを使用するとdelete Word
それらをカウントしすぎます。
編集ちょうど今少し編集していて、ドットコマンドをかなり使用する別の状況があることに気づきました。 Vimでこの種のことを処理する方法はもっと簡単だと思いますが、dotコマンドは次のような状況で役立ちます。以下は、基本的には「私は一度何かをしたので、もう数回繰り返したいです。」の例です。私は新しいテストを書いていました( C)で、別の場所からコピーしたSQLスクリプトを表す文字列定数を埋め込む必要がありました。元の複数行(7行)スクリプトは二重引用符で囲まれていなかったため、次のようにしました。
do_something();
do_another();
third_option();
ここで、カーソルを最初の行に置きます:A<bs><cr>{<cr><cr>}<cr><esc>
。 j.j.
および
do_something()
{
}
do_another()
{
}
third_option()
{
}
他のすべての答えは良い例を提供します。dot
は素晴らしいということを付け加えたいだけです。ある意味、これは、キーが1つだけ離れた最後のキーの組み合わせに対する自動マクロです。
マクロは素晴らしいですが、使用するのが少し面倒ですが、dot
は、たとえ強力でなくても常に使用できます。
私にとって、ドットコマンドは、あらゆる頻度でマクロの記録を開始するまで、最初はヒットまたはミスでした。有用なマクロを記録する秘訣は、問題を繰り返し可能なステップとして表すことです。場合によっては、ドットが唯一のこと、または問題をはるかに簡単にすることもあります。
また、dotコマンドを使用すると、次のような以前はそれほど必要でなかった特定のコマンドを使用するように強制されます。 ci "ca)テキストの削除/変更をドットで繰り返すことができる1つの"アクション "に折りたたむため。
また、ドットに加えてあります。使用頻度ははるかに少ないですが、最後のテキストモーションを繰り返す非常に便利です。 wやbなどの場合にはそれほど役に立ちませんが、fなどの場合には役立ちます。それは素敵な小さなトリックです。
私の最も一般的な例は、テキストのインデントレベルを変更することです
>%...
または、いくつかの変数の前に(char *)
を挿入するなど、特定のテキスト変更を再実行するだけです。
i(char *)<Esc>jjjwwww.jjjbb.
(または何でも)
これを変換する必要がある場合:
instance Movable Position where
(x,y) --> Left = (x-1,y)
(x,y) --> Right = (x+1,y)
(x,y) --> Up = (x,y-1)
(x,y) --> Down = (x,y+1)
これに:
instance Movable Position where
Position(x,y) --> Left = Position(x-1,y)
Position(x,y) --> Right = Position(x+1,y)
Position(x,y) --> Up = Position(x,y-1)
Position(x,y) --> Down = Position(x,y+1)
左側の「位置」には視覚的なブロック選択を使用し、右側にはドットを使用します。
前のポスターと同様に、削除するときによく使用します。
dw...
dd...
複数の行でアクションを繰り返す場合:
iSomeText:[Esc]j.j.j.