Vim - 検索で強調表示されたテキストを選択しますか?

Vim - 検索で強調表示されたテキストを選択しますか?

vim では、 で移動するのではなく、単語やフレーズにジャンプする検索を実行することがよくありますh/j/k/l。次に、 を押してn出現箇所間をジャンプします。

次のようなテキストがあるとします:

Time flies like an arrow; fruit flies like a banana. - Groucho Marx

入力し/an arrowて Enter キーを押します。そのフレーズがハイライト表示されるので、 でそのフレーズにジャンプしますn

今私はそのテキストを視覚的に選択する、おそらくそれを変更したり削除したりします。(はい、置換コマンドについては知っています:s。)

カーソルは「an arrow」の先頭の文字「a」にあるので、 を押してvから を数回押すeと、フレーズ全体が強調表示されます。しかし、もっと短くて意味的な方法があるような気がします。結局のところ、興味のあるテキストはすでに指定しています。

どのように命令文を書けばいいでしょうか「現在の検索選択を視覚的に選択しますか?」

答え1

gnバージョン 7.4 以降で使用できます(また、gNそれ以前のバージョンでも使用できます)。v//eトリックを置き換えます。

`n` と同様に、最後に使用した検索パターンを前方に検索し、ビジュアル モードを開始して一致を選択します。

参照:help gnまたはこのVimcast詳細については。

答え2

これを試して:

/an arrow
v//e

ビジュアルモードに入り、最後の検索を繰り返し、最後まで選択します。

答え3

v//eビジュアル モードを終了した後、次/前の検索結果にジャンプすると、カーソルが通常予想される結果の先頭ではなく、結果の末尾に配置されるため、それだけでは不十分であることがわかりました。

これを修正するには、まず検索結果の末尾 ( //e) にジャンプし、次に視覚的に先頭 ( v??) を選択する必要があります。

" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>

乾杯。

答え4

もっと「愚かな」方法は、以下のようにキー (この場合は F5) をマップすることです。

nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>

F5を押した後/an arrow

関連情報