選択した検索セグメント内を移動するコマンドがVim/Viにありますか?
たとえば、単語を検索する場合、強調表示されたセグメントの最後にカーソルを移動するコマンドはありますか? 「FishTaco」という単語があり、「Fish」のすべてのインスタンスを検索し、その後に何かを挿入したいとします。グローバル置換を実行できることはわかっていますが、2つの非順次インスタンスのみを変更したい場合はどうなりますか?
現在ハイライトされているセグメントの最後にカーソルを移動してアクションを実行できると便利な場所がわかりました。
あなたはこれでそれを行うことができます:
/Fish/e
/e
末尾にカーソルを置くと、検索領域の末尾にカーソルが移動します(デフォルトでは最初の文字ではありません)。
魚の最後のキャラクターの後にカーソルを置きたいだけなら、あなたは使うことができます
/Fish/e+1
これはhの後にカーソルを置きます。 (+1
がない場合、カーソルは最後の文字の左に移動します。)
Fishの後にカーソルを置くことに特に関心があり、「FishTaco」に表示されている場合のみ、次のオプションのいずれかを試すことができます。
使用できます
/FishTaco/s+4
カーソルは、フィッシュとタコの間になります。 /s+4
は、検索語句の先頭の4桁後にカーソルを置きます。
同様に使用できます
/FishTaco/e-3
これにより、カーソルが最後の(終了)文字の左側の3桁左に配置されます。
あなたも使うことができます
/FishTaco/b+4
/b+4
は/s+4
として扱われるためです。
/Fish
をすでに検索している場合は、//e
を使用して一致の最後に移動するように検索をすばやく変更できます。これにより、最後の検索が繰り返されますが、e
修飾子が追加されますすでに説明されています。
視覚的に選択したら、o
を使用して、選択したブロックの開始と終了の間でカーソル位置を切り替えることができます。選択範囲が行単位の場合、これはline位置を切り替えます。つまり、カーソルは選択範囲の開始行と終了行に移動しますが、開始文字と終了文字には移動しません。選択が文字単位の場合、動きも文字単位になります。
`<
および`>
を使用して、ビジュアルブロックの開始と終了の間でカーソルを切り替えることもできますが、これは選択自体に影響するため、選択範囲をリセットまたは調整するために使用されます。
編集:ああ、でも検索ハイライトの場合、これは機能しません。o
が行の挿入を開始するためです。検索のハイライトは視覚的な選択と同じではないと思います。申し訳ありません:)
/ long-regexp1 \zs long-regexp2 /
..カーソルは\ zsで停止します。:help\zsを参照してください
質問の「試合終了時のカーソル」の部分はすでに回答されています。
できるよ :%s/Fish/FishTaco/c
。これにより、すべての置換を確認または拒否して、「試合終了時のカーソル」ビジネス全体をスキップできます。