vimで次の数行をすばやく変更しますか?

vimで次の数行をすばやく変更しますか?

現在ファイルがあります(現在の場所は[n]です)。

The [p]hilosophical chicken saw the street
The red dog saw the street
The red dog crossed the street
The apple was red
The red dog crossed the street
The red dog was sleeping

次の4行を変更したいと思います。赤犬到着哲学的な鶏

私がよく遭遇する状況であり、結局マウスを使うようになる状況です。


最小限のキーストロークでこれを達成するための最速の方法は何ですか?

これまで私は試しました

  • Ctrl + gを押して行数を数え、次の行を数えて実行します。 :2,5s:red dog:philosophical chicken:g
    • 多くの時間、思考、タイピング
  • マクロ - >qu /red dog Enter c2W philosophical chicken Esc /red dog Enter q 2@u
    • 完了したら、交換(:s)を使用するのと同じくらい高速です。
  • 2yW j P 2dE- 両方の単語を取り出し(句読点を無視)、1行下に移動した後、カーソルの前に貼り付けて両方の単語を削除します。
    • 1行をすばやく完了しますが、今私のバッファに赤犬だから、戻ってバッファを再キャプチャする必要があります。
  • 強調する哲学的な鶏マウスで端末でCtrl+Shift+Cj 2cW+ Ctrl+ Shift+ VEsc- をクリックしてテキストをコピーし、1行下に移動して2つの単語を変更し、挿入モードに入り、貼り付け、Escを使用して挿入モードを終了します。
    • vimにマウスがありますか? :(
  • c2W philosophical chicken Esc ?red dog Enter .N.N.- 単語を2つ変更、脱出するには「Philosophy Chicken」入力、「Red Dog」の逆検索、最後のタスクを実行(2つの単語をPhilosophy Chickenに変更)、繰り返し
    • 完全な2つの単語を再入力する必要があります。

マウスを使って変更をコピーして貼り付けることが、これまで私にとって最速の方法でした。これは正しいアプローチではありません。

どうすればいいですか?

理想的には、2つの単語を取り出し、red dog2つの単語を取り出したバッファにナビゲートして置き換えたいと思います。

ベストアンサー1

@MattObertが言った内容を最適化します。

  • y3iw
  • /red dogEnter
  • c3iwCtrl-r0Esc
  • n.など。

詳細:

  • y3iwyank philosophical chicken;y2W末尾の空白を含む後者よりも少し優れています。このiw部分はまた、最初の単語ではなく、最初の単語の中央にカーソルを置いたときに、ヤンクが動作し続けることを保証します。
  • /red dogEnter最初のものを探すred dog
  • c3iw削除red dog(後にスペースなしで再び)と挿入モードに切り替える
  • Ctrl-r0レジスタから貼り付け0:h i_CTRL-Rおよび参照:h quote0
  • Escノーマルモードに切り替える
  • n.次の項目を見つけて、前のred dogタスクを再実行します(例:に置き換えますphilosophical chicken)。
  • n.必要に応じて繰り返します。

最初の秘密は、ヤンクが自動的に登録に保存されることです0。 2番目の秘密は、挿入モードで貼り付けレジスタを使用できることですCtrl-r

役に立つ可能性のあるその他の事項:

  • 行番号をオン:(:setlocal relativenumber! number!オフにするにはもう一度実行してください)
  • マクロと同じ:nnoremap <silent> <Leader>, :setlocal relativenumber! number!<CR>
  • カーソル行に基づいて行オフセットを使用します。:.,+6 s/.../.../
  • 確認と交換::%s/red dog/philosophical chicken/gc

Drew Nealの作品をチェックしてくださいウィムキャッスル他の同様のヒントを確認してください。 Vimに関する質問を次のサイトに投稿することも検討してください。ウェブサイトにアクセス

おすすめ記事