vimで貼り付け(上書き)する方法は?

vimで貼り付け(上書き)する方法は?

私は線を引いて貼り付けるためにとをvim使用しています。ただし、ファイル内の複数の場所で1行を変更しようとすると、クリップボード/レジスタの行が削除されるためできません。レジスタの使いやすさを知る必要があるかもしれませんが、現在行を置き換える方法があるようです。yypyy p dd pddp

ベストアンサー1

デフォルトでは、貼り付けコマンドは以下を使用します。"(「名前なし」)登録。実際にレジスタに書き込むすべての命令は、無名のレジスタにも書き込むため、引っ張り、削除、変更が影響します。これが、コピー - 削除 - 貼り付け順序がコピーされたテキストの代わりに削除されたテキストを貼り付ける理由です。

これ0登録するここで助けを得ることができます。レジスタを指定しないすべてのコピーコマンドは、コピーされたテキストをレジスタに配置します0(除く")。削除または変更操作の影響を受けないため、中間削除または変更操作を実行しても、インポートした行を複数回貼り付けるために使用できます。

  1. yy:登録すると、0両方"ともフルラインを持つようになります。
  2. 交換したい行に移動します。
  3. dd: レジスタが"ラインを削除しましたが、レジスタは0まだラインを取得しました。
    "0P:元のレジスタからインポートした行を貼り付けます0
  4. 交換するには、次の行に進んでください。
  5. dd"0P(同じ上記と)

"0p(バッファの最後の行を置き換えるときにカーソル位置決めが機能する方法のために代わりに使用する必要があります"0P。)

これは非常に近いブルース・エディガーの回答ただし、最初のインポート時にレジスタを指定する必要がないことは除外されます。 1つ以上の名前付きレジスタを使用することは非常に便利ですが、(たとえば)いくつかの行をに置き換え、他の行をAAABBBレジスタAAAに入れてa、レジスタBBBb入れて(またはその1つをレジスタに残して0)適切に貼り付けます。入れる必要がある場合はどうすればよいですか?

0プログレッシブビジュアルモード( )で貼り付けてキーストロークを保存することもVできますV"0p

入力するのが好きではない場合は、"0マッピングがより便利になる可能性があります。

noremap <Leader>p "0p
noremap <Leader>P "0P
vnoremap <Leader>p "0p

もう一つの方法は削除することです。_(「ブラックホール」)登録。削除しても"レジスタは影響を受けないため、コピー - 削除 - 貼り付け順にコピーしたテキストを名前のないレジスタに貼り付けることができます。

  1. yy:登録後、両方とも0有線"で接続されます。
  2. "_dd:記録に変化はありません。
    P:元のレジスタから読み込んだテキストを貼り付けます"

今回もマッピングする方が便利です。

noremap <Leader>d "_d

おすすめ記事