複数行をクリップボードの内容に置き換える最良の方法は何ですか?
私が抱えている問題は、行をヤンクして別の行に貼り付けると、「ヤンク」が私がちょうど置き換えた行に置き換えられることです。ここで、別の行を同じ行に置き換えたい場合は、戻ってもう一度ヤンクする必要があります。
これを行うには、より良い方法が必要です。
私はこれを私の.vimrcに持っています:
xnoremap p pgvy
(注:これはデフォルトのレジスタでのみ機能しますが、このマッピングは覚えやすいです)。もっと精巧なバージョンを書くことは可能でしょう。また、Pを使用して古い動作を取得することもできます。
"0
にはヤンクの内容が含まれている必要があります。入力するのはもう少し面倒ですが、"0p
はあなたが望むことをすべきです。
または、古い行を選択して置き換えないでください。検索でこれらの行を見つけた場合は、n.
何度も(最初のp
の後)、それらがすべて貼り付けられたら、ndd
に続けてn.
s必要に応じて。
Vimに移行するときに行う必要がある最大のメンタルスイッチングは、グループ編集を順次適用する方法を見つけることです。つまりある行で大量の編集を行ってから別の行で同じ編集を行うのではなく、最初の編集を一連の行で行います(.
その後、一連の行の2回目の編集など。代わりに、マクロの使用は素晴らしいので役立つかもしれませんが、「複雑な」変更を正しく処理するには少し面倒です。
私はよく別のレジストリを使用します。必要な行を名前付きレジストリにコピーします"ay
そして、そこから貼り付けます"ap
Vimの選択範囲に貼り付けると、デフォルトのレジスタが選択範囲の内容に置き換えられます。選択範囲を貼り付けてクリップボードレジスタの内容を消去する場合、.vimrcに次の行がある可能性が高い
set clipboard=unnamed
1つのオプションは、それを削除して、明示的なクリップボードレジスタ"+
を使用することです
別のオプションは、他の明示的に指定されたレジスタ(a〜z)を使用することです。最初の貼り付けの後、行を"c
などにヤンクし、"cp
を使用してそこから貼り付けます。
np
を使用します。ここで、n
は、行を貼り付ける時間の数です(例:3p
は3行を貼り付けます。
コピー/貼り付けを使用する代わりに、ciw
などのテキストオブジェクトコマンドを使用して、内側のWordを変更することをお勧めします。この方法には、.
repeatコマンドを使用して簡単に反復できるという利点があります。
yiw
内側の単語をヤンクします(カーソルの下の単語をコピーし、「最初」と言います)。ciw<C-r>0
「second」を変更し、「first」に置き換えます(Ctrl-Rです)。.
「3番目」を変更し、「最初」に置き換えます。