Vimでは、h/j/k/l
で移動するのではなく、単語やフレーズに移動するために検索を実行することがよくあります。次にn
を押して、オカレンス間を行き来します。
このテキストがあるとしましょう:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
「/an arrow
」と入力してEnterキーを押します。そのフレーズが強調表示され、n
でそのフレーズにジャンプします。
そのテキストを視覚的に選択するを変更したい、または削除したい。 (はい、:s
置換コマンドを知っています。)
カーソルが「矢印」の先頭の「a」にあるので、v
を押してから、e
を数回押して、フレーズ全体を強調表示できます。しかし、私には、より短く、よりセマンティックな方法があると感じています。結局のところ、興味のあるテキストをすでに指定しています。
"現在の検索選択を視覚的に選択しますか?"と言うコマンドをどのように作成できますか?
バージョン7.4以降ではgn
を使用できます(逆方向に進むにはgN
を使用します)。 v//e
騙す。
`n`のように、最後に使用した検索パターンを前方に検索し、ビジュアルモードを開始して一致を選択します。
見る :help gn
または このVimcast 詳細については。
これを試して:
/an arrow
v//e
ビジュアルモードになり、最後の検索を繰り返し、最後まで選択します。
見つけた v//e
それ自体では不十分です。ビジュアルモードを終了した後、次または前の検索結果にジャンプすると、カーソルが通常のように先頭ではなく、末尾に移動するためです。
これを修正するには、まず検索結果の最後にジャンプする必要があります(//e
)を選択し、視覚的に最初まで選択します(v??
):
" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>
乾杯。
Vim-Search-Objectsプラグイン が追加されました。これにより、Vimは検索の一致を通常のテキストオブジェクトとして扱うため、検索を実行した後、単純にva/
(一致を視覚的に選択)できます。
これを行う「ダンバー」方法は、以下のようにキー(この場合はF5)をマップすることです。
nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>
/an arrow
の後、F5を押します。