web-dev-qa-db-ja.com

複数回貼り付け

複数行をクリップボードの内容に置き換える最良の方法は何ですか?

私が抱えている問題は、行をヤンクして別の行に貼り付けると、「ヤンク」が私がちょうど置き換えた行に置き換えられることです。ここで、別の行を同じ行に置き換えたい場合は、戻ってもう一度ヤンクする必要があります。

これを行うには、より良い方法が必要です。

79
jwerre

私はこれを私の.vimrcに持っています:

xnoremap p pgvy

(注:これはデフォルトのレジスタでのみ機能しますが、このマッピングは覚えやすいです)。もっと精巧なバージョンを書くことは可能でしょう。また、Pを使用して古い動作を取得することもできます。

98
Benoit

"0にはヤンクの内容が含まれている必要があります。入力するのはもう少し面倒ですが、"0pはあなたが望むことをすべきです。

または、古い行を選択して置き換えないでください。検索でこれらの行を見つけた場合は、n.何度も(最初のpの後)、それらがすべて貼り付けられたら、nddに続けてn.s必要に応じて。

Vimに移行するときに行う必要がある最大のメンタルスイッチングは、グループ編集を順次適用する方法を見つけることです。つまりある行で大量の編集を行ってから別の行で同じ編集を行うのではなく、最初の編集を一連の行で行います(.その後、一連の行の2回目の編集など。代わりに、マクロの使用は素晴らしいので役立つかもしれませんが、「複雑な」変更を正しく処理するには少し面倒です。

25
dash-tom-bang

私はよく別のレジストリを使用します。必要な行を名前付きレジストリにコピーします"ayそして、そこから貼り付けます"ap

12
Facundo Casco

Vimの選択範囲に貼り付けると、デフォルトのレジスタが選択範囲の内容に置き換えられます。選択範囲を貼り付けてクリップボードレジスタの内容を消去する場合、.vimrcに次の行がある可能性が高い

set clipboard=unnamed

1つのオプションは、それを削除して、明示的なクリップボードレジスタ"+を使用することです

別のオプションは、他の明示的に指定されたレジスタ(a〜z)を使用することです。最初の貼り付けの後、行を"cなどにヤンクし、"cpを使用してそこから貼り付けます。

11
JaredPar

npを使用します。ここで、nは、行を貼り付ける時間の数です(例:3pは3行を貼り付けます。

8
toopay

コピー/貼り付けを使用する代わりに、ciwなどのテキストオブジェクトコマンドを使用して、内側のWordを変更することをお勧めします。この方法には、. repeatコマンドを使用して簡単に反復できるという利点があります。

  1. yiw内側の単語をヤンクします(カーソルの下の単語をコピーし、「最初」と言います)。
  2. ...カーソルを別のWordに移動します( "second"など)。
  3. ciw<C-r>0「second」を変更し、「first」に置き換えます(Ctrl-Rです)。
  4. ...カーソルを別のWord(「3番目」など)に移動します。
  5. .「3番目」を変更し、「最初」に置き換えます。
5
jack guan