Vim - 選擇搜尋突出顯示的文字?

Vim - 選擇搜尋突出顯示的文字?

在 vim 中,我經常執行搜尋來跳到某個單字或短語,而不是使用 導航到那裡h/j/k/l。然後我點擊n在事件之間跳轉。

假設我有這樣的文字:

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

我輸入/an arrow並按回車鍵。該短語被突出顯示,我用 跳到它n

現在我想要直觀地選擇該文本,也許要更改它或刪除它。 (是的,我知道:s替換命令。)

由於我的遊標位於“箭頭”開頭的字母“a”處,因此我可以點擊v,然後按e幾次以突出顯示整個短語。但我有一種感覺,有一種更短、更語意化的方式。畢竟,我已經指定了我感興趣的文本。

我該如何寫一個命令來表示“直觀地選擇當前搜尋選項?”

答案1

gn您可以在 7.4 以上版本中使用(以及gN向後版本)。它取代了v//e技巧。

向前搜尋最後使用的搜尋模式,例如“n”,然後啟動視覺模式以選擇匹配項。

請參閱:help gn這個維姆卡斯特了解更多。

答案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>

/an arrow按F5後。

相關內容