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
。