vi/vimでテキスト行を上書きする方法は?

vi/vimでテキスト行を上書きする方法は?

vi/vimでページの下のテキスト行を上書きしたいと思います。 1行の文字を上書きするのと似ています。を押してR貼り付けると文字が上書きされますが、ページの下でも同じことをしたいと思います。

例:

次のテキストを含むファイルがあります。

 var1: 7FBzezsLKyzYmVeM
 var2: kL8RIBJVNrlEUyYV
 var3: 1FkmXFSXtH4msKnL

この行を次に変更したいと思います。

 var1: 7PmuHKKRx9OYt9mR
 var2: nuRAS5dAKfUrvECJ
 var3: km11I7HuXOWuu43X

私がよくやっていることは、既存の行を削除してその場所に新しい行を貼り付けることです。またはその逆の場合も同様です。

新しいテキストは、他の場所からインポートするかコピーするか、貼り付けバッファから取得されます。

広く検索しましたが、これを行う方法への参照が見つかりませんでした。マクロを使用しても、これを行う方法を想像することはできません。

誰でもこれができましたか?これができない場合は、私は確かに知っています。

答え1

これを試してみてください:

  • コピーしたい行をコピー/プルする
  • 変更したいバッファに切り替える
  • gRCtrl-r0Esc

翻訳する:

  • gRビジュアル代替モードの開始(参照:h gR
  • Ctrl-r0- レジスタから貼り付け(、0参照):h i_CTRL-R:h quote0
  • Esc- 葉交換モード。

答え2

何を言っているのか分からない。

一致する最初の行に移動して使用

.,.+2d
r /tmp/var
  • .,.+2d行3が削除されます(必要に応じて行2の調整)。
  • r /tmp/varテンプレートファイルを読み込みます(挿入)。

答え3

gR前の長さと新しい長さが同じ場合は、組み込み(@SatoKatsuraが提案したように)をお勧めします。しかし、一般的なケースではこれはうまくいかず、他のアプローチを取る必要があります。この機能があまりにも頻繁に必要であるため、これを簡素化し、最大速度を可能にするプラグインを作成しました。レジスタと交換

プラグインは、gr{モーション}/テキストオブジェクト、全行、または現在の選択に含まれるテキストをレジスタの内容に置き換える2-in-1コマンドを提供します。前のテキストはブラックホールレジスタから削除されます。つまり、消える。多くのエッジケースを透過的に処理し、.標準コマンドを使用して迅速な繰り返しを可能にします。気に入らない場合は、そのページに代替案へのリンクがあります。

関連情報