有没有办法突出显示 (g)Vim 中的多个搜索?

Posted

技术标签:

【中文标题】有没有办法突出显示 (g)Vim 中的多个搜索?【英文标题】:Is there any way to highlight multiple searches in (g)Vim? 【发布时间】:2010-10-16 19:23:41 【问题描述】:

我想在 Vim/gVim 中搜索多个字符串,并用不同的颜色突出显示它们。有没有办法使用开箱即用的 Vim 或插件来做到这一点?

【问题讨论】:

【参考方案1】:

试试“Highlight multiple words”,它使用matchadd()

【讨论】:

这是最酷的,只需点击\+m(或双击)您想要(取消)突出显示的每个单词。而且你每次都会得到不同的颜色。【参考方案2】:

MultipleSearch2 是另一个集成 vim 搜索的脚本: http://www.vim.org/scripts/script.php?script_id=1183

【讨论】:

【参考方案3】:

MultipleSearch:同时突出显示多个搜索,每个搜索使用不同的颜色。

http://www.vim.org/scripts/script.php?script_id=479

:Search <pattern1> //will highlight all occurences of <pattern1> in the current buffer.
A subsequent :Search <pattern2> will highlight all occurences of <pattern2> in the current buffer.

【讨论】:

【参考方案4】:

这可以针对两种搜索模式手动完成,无需任何脚本。

:match Search /pattern/
:match Search /<CTRL-R>/   # highlight the current search pattern

搜索是高亮组的名称,使用补全选择另一个组用不同的颜色高亮。

 :match <TAB>
 :match <TAB>    # completion will list all highlight group

当您无法使用自己的 vim 配置时,这很方便。

:match none      # clear the match pattern to stop highlighting

【讨论】:

对我不起作用。想知道的人可以试试这个:***.com/questions/4162664/…【参考方案5】:

是的,您可以直接使用matchadd()

添加一个亮点,例如。对于尾随空格:

:highlight ExtraWhitespace ctermbg=grey guibg=grey
:call matchadd('ExtraWhitespace', '\s\+$', 11)

查看所有匹配项:

:echo getmatches()

要删除匹配项,请使用matchdelete()。例如:

:call matchdelete(7)

【讨论】:

【参考方案6】:

我的Mark plugin 可以同时以不同颜色突出显示多个单词,就像内置搜索一样。它带有许多映射和命令,允许持久化模式,并支持多种调色板。

【讨论】:

是否有带有指南描述的 github 页面?在 vim.org 上阅读并不容易。也不容易报告问题。 如何通过 Vundle 安装这个插件?因为 github vim-scripts 中的代码太旧了。 @LiMingHung vim-scripts 的那个版本可以工作,但是是的,它已经过时了。你可以让 vim-scripts 的人更新它;他们的刮刀有一些烦人的问题。 可以把你的插件放到github上吗?可以直接通过 Vundle 安装。不必依赖 vim 脚本。 @ErtuğrulAltınboğa:Mark.vim 现在是 on GitHub!【参考方案7】:

我更喜欢高亮插件,简单又够用,可以自动用不同的颜色高亮不同的单词。

http://www.vim.org/scripts/script.php?script_id=1599

【讨论】:

【参考方案8】:

要在 vim 中搜索多个字符串,您可以这样做:

/search1\|search2

这有效,并且将突出显示search1search2,但颜色相同。 您必须在 vim 编辑器中执行此操作。

【讨论】:

如果要查找 search1 但不匹配 search2 怎么办,如何在 vim 中修改该命令行?【参考方案9】:

在 vim 编辑器中突出显示多个单词有两种简单的方法。

    进入搜索模式,即输入“/”,然后输入\v,后跟要搜索的单词,用“|'(管道)。 例如:/\vword1|word2|word3

    进入搜索模式并键入要搜索的字词,以“\|”分隔。 例如:/word1\|word2\|word3

基本上,第一种方法会将您置于正则表达式模式,这样您就无需在用于搜索的每个管道或其他分隔符之前添加任何额外的反斜杠。

【讨论】:

这特别有用,因为您仍然可以使用“n”(或“N”)转到下一个(或上一个)结果。 @DaveDopson "downside" 你知道获得多种颜色的方法吗?【参考方案10】:
:%s /red\|green\|blue/

我不确定如何为不同的关键字保留不同的颜色。谢谢。

【讨论】:

以上是关于有没有办法突出显示 (g)Vim 中的多个搜索?的主要内容,如果未能解决你的问题,请参考以下文章

在 Vim 中突出显示搜索而不是替换?

在 vim 中用于 inc-search 的 Emacs 样式突出显示

Vim:如何更改搜索命中和快速修复选择的突出显示颜色

在vim中突出显示python doc字符串中的ReST

如何摆脱 Vim 中的搜索高亮显示

在vim中的python doc字符串中突出显示ReST