現在ファイルがあります(現在の場所は[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+C
、j 2cW
+ Ctrl+ Shift+ V、Esc
- をクリックしてテキストをコピーし、1行下に移動して2つの単語を変更し、挿入モードに入り、貼り付け、Escを使用して挿入モードを終了します。- vimにマウスがありますか? :(
c2W
philosophical chicken
Esc
?red dog
Enter
.N.N.
- 単語を2つ変更、脱出するには「Philosophy Chicken」入力、「Red Dog」の逆検索、最後のタスクを実行(2つの単語をPhilosophy Chickenに変更)、繰り返し- 完全な2つの単語を再入力する必要があります。
マウスを使って変更をコピーして貼り付けることが、これまで私にとって最速の方法でした。これは正しいアプローチではありません。
どうすればいいですか?
理想的には、2つの単語を取り出し、red dog
2つの単語を取り出したバッファにナビゲートして置き換えたいと思います。
ベストアンサー1
@MattObertが言った内容を最適化します。
- y3iw
- /
red dog
Enter - c3iwCtrl-r0Esc
- n.など。
詳細:
- y3iwyank
philosophical chicken
;y2W末尾の空白を含む後者よりも少し優れています。このiw部分はまた、最初の単語ではなく、最初の単語の中央にカーソルを置いたときに、ヤンクが動作し続けることを保証します。 - /
red dog
Enter最初のものを探す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に関する質問を次のサイトに投稿することも検討してください。ウェブサイトにアクセス。