自定义 vim 突出显示

自定义 vim 突出显示

我现在正在编辑一些 xml,并给自己留了一些注释,以便以后回顾。像这样

<!-- Question: bla bla -->

我现在正在使用 vim 进行编辑,我希望 vim 能够突出显示问题,以便我可以轻松查看代码并找到我需要查看的所有位置。我知道我需要在 vimrc 中添加一些内容,但我认为我可能搜索错了。

更新

我尝试将它放入我的.vimrc,但没有效果:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

更新 2

实际上我可以看到我之前所做的事情产生了一些效果,因为当我这样做时:

:hi

它向我展示了所有突出显示的内容,其中一项是:

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

并且 xxx 格式正确

这让我相信我只是没有正确定义问题。问题是否需要单独占一行?

更新 3

好的用户 22303 的帖子我有这个工作:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

但是我怀疑每个文件只允许有一个匹配项。因为当我这样做时:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

第一个停止工作。(但第二个工作正常)。

答案1

我认为我们给你的答案不太正确。以下是我在我的机器上测试过的方法。

首先,创建您自己的新亮点组:

:highlight MyQuestions guifg=red guibg=green

现在,指定只要模式匹配,高亮组就会存在:

:syntax match MyQuestions /Question/

这样应该会开始在包含该文本的每一行上突出显示文本“Question”。要扩展以显示整行,您需要将搜索文本更改为使用通配符匹配整行,如下所示:

:syntax match MyQuestions /.*Question.*/

答案2

您正在寻找的文件是“语法”文件。请尝试在/usr/local/share/vim/syntax/或中查找/usr/share/vim/syntax/。您想要的文件是 xml.vim。

最简单的做法就是找到

syn keyword xmlTodo         contained TODO FIXME XXX

并将其更改为:

syn keyword xmlTodo         contained TODO FIXME XXX Question

这会将“Todo”突出显示添加到任何包含文本的评论中Question

如果您要使用它(永远),最好将 xml.vim 复制到本地,~/.vim/syntax这样对 vim 的更改就不会覆盖您的自定义语法文件。

更新

如果你想要一个类似的(某种程度的)功能任何文件,我会使用“goto”命令。我承认这很像 hlsearch,你说它让你很烦。

编辑时,当光标位于某个单词上时,键入gd从文件中的当前位置开始搜索或gD从开头开始搜索。文件中与当前单词匹配的每个单词都会突出显示。您可以键入n以跳转到该单词的下一个实例。

我倾向于这样做,因为这样只需输入很少的内容即可获得突出显示和导航。您可以按照通常的方式关闭突出显示::noh[lsearch]

答案3

你可以简单地做

:set hlsearch

然后搜索问题

答案4

您不一定需要将命令放入 vimrc 中。您可以随时在命令行中输入它,然后在不再需要突出显示时清除它。命令将类似于以下内容:

:嗨问题 guifg=red guibg=blue gui=bold

在 gvim (即带有 gui 的 vim) 中,将设置前景 (guifg)、背景和常规字符设置。

如果你想摆脱高亮显示,请这样做:

:hi 问题清楚

在终端中使用 vim 您可以修改以使用此命令:

:hi 问题 ctermfg=red ctermbg=blue term=bold

当然,你可以将其中任何一个放入你的 vimrc 中,也可以将 gui 和 term 标志组合成单个 hi 命令。


[在我阅读了另一位发帖者的回答后添加如下]

抱歉,我假设您的问题行的语法已经与您的语法文件中 Vim 内置“问题”高亮标签的设置相匹配。只需查看提到 vim 的 xml 语法文件的其他答案,然后您就可以使用 ToDo 高亮组而不是问题发出上述命令。

相关内容