Vim - 选择搜索突出显示的文本?

Vim - 选择搜索突出显示的文本?

在 vim 中,我经常执行搜索以跳转到某个单词或短语,而不是使用 导航到那里h/j/k/l。然后我点击n在出现的地方之间跳转。

假设我有这样的一段文字:

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

我输入/an arrow并按下回车键。该短语被突出显示,然后我使用 跳转到该短语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>

/an arrow按下 F5后。

相关内容