我现在正在编辑一些 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 高亮组而不是问题发出上述命令。