29

ビジュアルセレクト+ヤンクを使用して、クリップボードに3文字の「foo」をヤンクしたとしましょう。

次に、5行目の別の文字(この文字をxと呼びましょう)にカーソルを移動しました。これを以前にヤンクした文字、つまりfooに置き換えます。

'p'を使用してxの後にfooを貼り付けるか、' P'を使用してxの前にfooを貼り付けることができますが、xをfooに置き換えたいと思います。

'vp'を使用してxをfooに置き換えることができますが、クリップボードにxが残っているため、これは1回だけ機能します。つまり、次のxに移動して、もう一度vpを押すと、fooに置き換えられません。

確かに、:s / x / foo / gcを使用して、置換したくないxの出現をすべて無視することで、検索/置換を行うことができますが、これは、特に必要なすべての場合に、入力するのが少し面倒です。 doは、カーソルに非常に近いが同じ行(つまり、2、3、7行目)にないxの2つまたは3つのオカレンスを置き換えることです。

現在、:2,7s / x / foo / gcを使用していますが、カーソルをxに移動し、[ここにマジックボタンを挿入]を押してfooに置き換える方法があるかどうか疑問に思います。次に、xの次のオカレンスに移動し、[魔法のボタン]をもう一度押してブームを起こすと、xが再びfooに置き換えられます。

この例えを使用するのは面倒ですが、メモ帳で入力していると想像してください。3つの文字を選択し、Ctrl + cを押してクリップボードにコピーしてから、xを強調表示し、Ctrl+vを押して次のように置き換えます。 foo。次に、別のxを強調表示し、Ctrl+vをもう一度押します。

これをvimで行うにはどうすればよいですか?

4

5 に答える 5

48

どうですかs<C-r>0、これはで繰り返すことができます.

  • sカーソルの下の文字を削除し、挿入モードにします。
  • <C-r>0ヤンクされたテキストを保持するレジスタ0を挿入します。

手動で使用sして入力することもできます。これは、foo.

于 2012-05-24T09:25:59.093 に答える
7

0レジスタから。を使用して貼り付けv"0pます。

于 2012-05-24T09:17:45.083 に答える
2

「foo」を別のレジスタにコピーします。例:レジスタ:

「ay

次に、「foo」に置き換える文字を視覚的に選択して、を押します。

"aP

于 2012-05-24T09:17:14.363 に答える
0

これは理想的とは言えませんが、名前付きバッファにヤンクする場合a(たとえば、とヤンクする"ay場合)、を使用できますx"aP。お気に入りの地図を使用して、1回のキーストロークにします。

于 2012-05-24T09:18:08.100 に答える
0

私はこれを頻繁に必要とします、私はそのためのプラグインを書きました:ReplaceWithRegister

このプラグインはgr、{motion}でカバーされるテキスト、行全体、または現在の選択範囲をレジスタの内容に置き換えるツーインワンコマンドを提供します。古いテキストはブラックホールレジスタに削除されます。つまり、削除されます。

于 2012-05-24T12:32:38.757 に答える