私は線を引いて貼り付けるためにとをvim
使用しています。ただし、ファイル内の複数の場所で1行を変更しようとすると、クリップボード/レジスタの行が削除されるためできません。レジスタの使いやすさを知る必要があるかもしれませんが、現在行を置き換える方法があるようです。yy
p
yy
p
dd
p
dd
p
答え1
デフォルトでは、貼り付けコマンドは以下を使用します。"
(「名前なし」)登録。実際にレジスタに書き込むすべての命令は、無名のレジスタにも書き込むため、引っ張り、削除、変更が影響します。これが、コピー - 削除 - 貼り付け順序がコピーされたテキストの代わりに削除されたテキストを貼り付ける理由です。
これ0
登録するここで助けを得ることができます。レジスタを指定しないすべてのコピーコマンドは、コピーされたテキストをレジスタに配置します0
(除く"
)。削除または変更操作の影響を受けないため、中間削除または変更操作を実行しても、インポートした行を複数回貼り付けるために使用できます。
yy
:登録すると、0
両方"
ともフルラインを持つようになります。- 交換したい行に移動します。
dd
: レジスタが"
ラインを削除しましたが、レジスタは0
まだラインを取得しました。
"0P
:元のレジスタからインポートした行を貼り付けます0
。- 交換するには、次の行に進んでください。
dd"0P
(同じ上記と)
"0p
(バッファの最後の行を置き換えるときにカーソル位置決めが機能する方法のために代わりに使用する必要があります"0P
。)
これは非常に近いブルース・エディガーの回答ただし、最初のインポート時にレジスタを指定する必要がないことは除外されます。 1つ以上の名前付きレジスタを使用することは非常に便利ですが、(たとえば)いくつかの行をに置き換え、他の行をAAA
(BBB
レジスタAAA
に入れてa
、レジスタBBB
にb
入れて(またはその1つをレジスタに残して0
)適切に貼り付けます。入れる必要がある場合はどうすればよいですか?
0
プログレッシブビジュアルモード( )で貼り付けてキーストロークを保存することもV
できますV"0p
。
入力するのが好きではない場合は、"0
マッピングがより便利になる可能性があります。
noremap <Leader>p "0p
noremap <Leader>P "0P
vnoremap <Leader>p "0p
もう一つの方法は削除することです。_
(「ブラックホール」)登録。削除しても"
レジスタは影響を受けないため、コピー - 削除 - 貼り付け順にコピーしたテキストを名前のないレジスタに貼り付けることができます。
yy
:登録後、両方とも0
有線"
で接続されます。"_dd
:記録に変化はありません。
P
:元のレジスタから読み込んだテキストを貼り付けます"
。
今回もマッピングする方が便利です。
noremap <Leader>d "_d
答え2
Kevinが良い答えをしたようですが、削除して置き換える各行に集中したい場合は、少し異なる解決策があります。
1. Find line to copy in some select number of places.
2. Put cursor on it.
3. "ayy copies that line into register 'a'.
4. Find line to replace. Put cursor on it.
5. dd deletes that line. "aP inserts the copied line above where the cursor now lies.
6. Repeat steps 4 and 5.
このアプローチを使用すると、パターンマッチングを使用して削除して置き換える行を見つけることができ、ファイルの先頭(1G)に戻る必要があるたびに前方に検索できます。繰り返し集めて配置したいラインが2本以上なら、"ayy
最初のライン、"byy
2番目のライン、"cyy
3番目のラインなどとして活用します。私は精神的負担を軽減するために習慣(レシピの活用を落とす)を開発しました。
答え3
V
ビジュアルモードで置き換えたい線を強調表示してタップしてpp
線を貼り付けることができます。
これはキーストロークを一度だけ追加するので、かなり良い解決策のようです。
答え4
c
このような場合は、通常の検索で「変更」コマンドを頻繁に使用します。興味のあるテキストのすべての行/断片に対してファイルを検索してから、順次n.
コマンドを使用できます(n
次のコマンドでは、.
最後の変更について繰り返します)。
/^hello
- こんにちはで始まる行を見つけてください。
c$goodbye
- 行を変えてさよならを言う。
n.
- 検索と変更を繰り返します。
その行をすでにファイル内の行に変更するには、その行を入力バッファにコピーし(GUIで許可されていると仮定)、貼り付けて最初の変更コマンドの内容を取得します。
viのすべてと同様に、好きな編集タイプに応じてポケットに多くのオプションがあることをお勧めします。