4

ビジュアル モードでテキストを貼り付けるデフォルトの (そして愚かな) 動作を変更したいと思います。現在の手順と動作は次のとおりです。

  1. 任意のテキストをコピーします (これを「テキスト A」と呼びましょう)
  2. ビジュアル モードで他のテキストを選択します (これを「テキスト B」と呼びましょう)。
  3. 選択中に「p」を押すと、「テキスト B」が「テキスト A」に置き換えられます。
  4. 別の場所でもう一度「p」を押します。その結果、「テキスト B」が貼り付けられます。

手順 4 の結果が「テキスト A」になるようにします。

つまり、ビジュアル モードで貼り付けて、コピーしたテキストを保持し、貼り付けを続行し、置き換えられたもので上書きしないようにしたいと考えています。

4

2 に答える 2

6
xnoremap <expr> P '"_d"'.v:register.'P'

(私のコードではありません。以前にどこかで見つけました)。

デフォルトがばかげているとは言いませんが、以前はそれを使用して効果がありました。ここでの使用は、 と の間に視覚的なP違いがないためうまく機能します。pP

編集:ただし、行単位のヤンクを文字単位の選択に貼り付けると、うまく機能しません。それは本当に一般的な状況ではないので、あまり気にしませんが、念のために警告します.

于 2013-09-10T22:56:37.863 に答える
0

これが頻繁に必要になるので、簡素化して最大速度を可能にするプラグインを作成しました: ReplaceWithRegister

grこのプラグインは、{motion} / テキスト オブジェクト、行全体、または現在の選択範囲でカバーされたテキストをレジスタの内容に置き換える2 つの機能を備えたコマンドを提供します。古いテキストはブラックホール レジスタに削除されます。つまり、消えてしまいます。.多くのコーナーケースを透過的に処理し、標準コマンドを介してすばやく繰り返すことができます。気に入らない場合は、そのページに代替案へのリンクがあります。

于 2013-09-11T07:58:38.567 に答える