vim可视模式搜索
您可以通过在模式中使用特殊的转义序列在 Vim 中的可视选择中进行搜索。Vim 将这些称为“原子”,有关更多信息,您可以查看帮助文档::help atom
和:help ordinary-atom
.
这什么时候有用?有时我只想在当前方法中搜索字符串。使用此功能,我可以确定我只在我打算搜索的代码区域中搜索,并且不会在文件周围反弹。
要使用,首先在视觉上选择一些文本区域。我可以手动执行此操作,然后shift-V
选择行。但在我最常见的情况下,我将使用一个命令来虚拟地选择当前段落****的一个圆形。(并确保您知道如何编辑视觉选择——这是我们最受欢迎的技巧之一。)j``k``vap
一旦你选择了一些东西,按下Esc
退出选择模式。然后 search using/
和 use\%V
向 Vim 表明你只想搜索最后一个视觉选择。
例如:/\%Vfoobar
将在最后一个视觉选择中搜索foobar
.
在下面的视觉选择中有一个简短的搜索演示。首先,我用vap
. 然后我request
使用/\%Vrequest
.
(对于这个演示,我将突出显示颜色设置为黄色,以便使用以下内容脱颖而出::hi Search ctermbg=Yellow ctermfg=Black
。)
如何在 Vim 的视觉选择中搜索?
您可以使用\%V
模式中的转义序列在 Vim 中的最后一个可视选择中进行搜索。只需搜索一个单词或短语,但要像这样添加该序列:
/\%Vfoobar
Vim 将把它的搜索限制在最后一个可视选择的文本区域。
Vim 视觉选择搜索什么时候有用?
因为视觉选择可以扩展到文本的任何区域,所以在很多情况下您可能只在视觉选择中进行搜索。但是一个常见的用例是在方法内部进行搜索,您通常可以使用该方法进行选择vap
(通常选择****一个****圆形段落)。
我不能在 Vim 中直观地选择然后使用 / 进行搜索吗?
不,当您在 Vim 中处于可视选择模式时,使用/
会将您的搜索区域扩展到下一个匹配项,这意味着您不能只选择并突出显示文本然后在其中搜索。您首先必须停止视觉选择,Esc
然后\%V
在最后一个视觉选择中搜索并使用匹配。
%V Vim 文档是什么?
在可视区域内匹配。当视觉模式已经停止时,匹配gv
将重新选择的区域。这是一场/zero-width
比赛。为确保整个图案位于可视区域内,请将其放在图案的开头和结尾之前
,例如:
/\%Vfoo.*ba\%Vr
如果仅以可视方式选择了“foo bar”,这也有效。这个:
/\%Vfoo.*bar\%V
如果视觉选择在“r”之后继续,将匹配“foo bar”。仅适用于当前缓冲区。