web-dev-qa-db-ja.com

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

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を数回押して、フレーズ全体を強調表示できます。しかし、私には、より短く、よりセマンティックな方法があると感じています。結局のところ、興味のあるテキストをすでに指定しています。

"現在の検索選択を視覚的に選択しますか?"と言うコマンドをどのように作成できますか?

53
Nathan Long

バージョン7.4以降ではgnを使用できます(逆方向に進むにはgNを使用します)。 v//e 騙す。

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

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

38
David Lord

これを試して:

/an arrow
v//e

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

見つけた v//eそれ自体では不十分です。ビジュアルモードを終了した後、次または前の検索結果にジャンプすると、カーソルが通常のように先頭ではなく、末尾に移動するためです。

これを修正するには、まず検索結果の最後にジャンプする必要があります(//e)を選択し、視覚的に最初まで選択します(v??):

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

乾杯。

8
sunaku

Vim-Search-Objectsプラグイン が追加されました。これにより、Vimは検索の一致を通常のテキストオブジェクトとして扱うため、検索を実行した後、単純にva/(一致を視覚的に選択)できます。

2
sunaku

これを行う「ダンバー」方法は、以下のようにキー(この場合はF5)をマップすることです。

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

/an arrowの後、F5を押します。

1
Johnny