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

Nat*_*ong 55 search vim selection

在 vim 中,我经常执行搜索以跳转到一个单词或短语,而不是使用h/j/k/l. 然后我点击n在事件之间跳跃。

说我有这样的文字:

Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Run Code Online (Sandbox Code Playgroud)

我输入/an arrow并按回车键。该短语被突出显示,我用 跳转到它n

现在我想直观地选择该文本,也许要更改它或删除它。(是的,我知道:s替换命令。)

由于我的光标位于“箭头”开头的字母“a”处,我可以点击v,然后按e几次以突出显示整个短语。但我觉得有一种更短、更语义化的方式。毕竟,我已经指定了我感兴趣的文本。

我如何编写一个命令来说“视觉选择当前的搜索选择?”

Dav*_*ord 44

您可以gn在 7.4 版以后使用(并gN倒退)。它取代了v//e技巧。

向前搜索上次使用的搜索模式,如使用 `n`,并启动可视模式以选择匹配项。

有关更多信息,请参阅:help gn此 Vimcast

  • 很高兴让答案更好,但我不确定这是否会有所帮助。这个问题巧妙地列出了目标(“直观地选择下一个搜索结果”),`gn` 完全按照要求执行。将其作为单独的答案提交强调它是 `v//e` 的完全替代品。我刚刚编辑了我的答案以添加文档,这样更好吗? (2认同)

Den*_*son 29

尝试这个:

/an arrow
v//e
Run Code Online (Sandbox Code Playgroud)

它进入可视模式,重复上次搜索并选择直到结束。


小智 8

我发现这v//e本身是不够的,因为在您退出可视模式后,跳转到下一个/上一个搜索结果会将光标放在结果的末尾,而不是您通常期望的开头。

要解决这个问题,我们应该首先跳到搜索结果的末尾 ( //e),然后在视觉上选择到它的开头 ( v??):

" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>
Run Code Online (Sandbox Code Playgroud)

干杯。