在 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後。