如何使.vimrc中的突出显示命令在Vim 7.4中立即生效?


9

highlight我的.vimrc文件中有几个命令。在Vim 7.3中,这些在Vim启动后立即生效。在更新到Vim 7.4之后,情况不再如此。Vim最初使用其默认突出显示。当我.vimrc通过执行再次加载时source ~/.vimrc,突出显示了我想要的效果。

您应该能够使用以下步骤来重现此问题:

  1. 复制.vimrc文件。

  2. 替换~/.vimrc为仅包含行的文件highlight Type ctermfg=28 cterm=bold

  3. 运行vim dummy.c在256色终端(例如GNOME终端)。

  4. 键入int到缓冲区。本int应出现在常规字体并淡绿色,这不是我想要的。

  5. 输入:source ~/.vimrc。现在,int应当以粗体显示,并以深绿色显示。

根据如何控制/配置vim颜色一文,只需将highlight命令放入即可.vimrc。文章说您应该放在命令syntax enable后面highlight,但这没有任何区别。

我的第一个解决方法是在每个highlight命令之前.vimrc加上autocmd VimEnter *。这适用于某些文件类型,但不适用于其他文件类型(C文件为示例)。

这种行为的原因是什么?如何highlight在启动Vim时执行命令,以使它们在整个Vim会话期间对所有缓冲区生效?


听起来像是问题542
基督教Brabandt

是的,set compatible在的开头添加时.vimrc,语法突出显示将按预期工作。因此,这似乎确实是该漏洞的实际表现。
Wolfgang Jeltsch,2016年

我在highlight命令之前添加了autocmd ColorScheme *,这是错误报告中提出的解决方法。它仍然不起作用。☹
沃尔夫冈Jeltsch

我现在正在编写自己的配色方案,显然它也可以解决此错误。
Wolfgang Jeltsch,2016年

克里斯蒂安,您可以只写评论作为答案吗?毕竟,这是对我的问题的正确答案。还是有其他方法可以处理实际上揭示错误的问题?
Wolfgang Jeltsch,2016年

Answers:


5

这不是绝对的答案,您的问题听起来像是问题542。显然,您可以通过编写自己的基本颜色方案来解决此问题,而不是将这些hi ...语句直接编写到.vimrc中。


我认为是因为这个Vim问题;因此您的回答似乎确实是我问题的正确答案。
Wolfgang Jeltsch,2016年

3

实际上,您不应该将自定义突出显示放在vimrc中,而应放在海关语法文件中。

这些文件应位于预期的文件类型~/.vim/after/syntax/filetype.vim所在的位置filetype。如果您对语法文件最满意,但是想添加一些命令,则可以按照以下步骤操作(取自:h mysyntaxfile-add):

  1. 在该目录中创建一个名为“ after / syntax”的目录。对于Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. 编写一个Vim脚本,其中包含要使用的命令。例如,要更改C语法的颜色:

    highlight cComment ctermfg=Green guifg=Green
    
  3. 将该文件写入“之后/语法”目录中。使用语法名称,并添加“ .vim”。对于我们的C语法:

    :w ~/.vim/after/syntax/c.vim
    

而已。下次编辑C文件时,注释颜色将有所不同。您甚至不必重启Vim。

:h mysyntaxfile是获取有关如何正确设置自己的语法文件的信息的好地方。另请参阅“ Vimscript困难之道”,作为该主题的几章。


2
如果我想更改所有文件类型的突出显示怎么办。例如,无论文件类型如何,我都希望注释的颜色为深蓝色。
Wolfgang Jeltsch,2016年

我或多或少地尝试了您建议的方法。我添加了一个文件.vimrc/highlighting.vim,创建了一个目录,.vimrc/syntax/after并添加了.vim指向.vimrc/highlighting.vim该目录的* filetype *形式的几个符号链接。语法高亮仍然不起作用。
Wolfgang Jeltsch,2016年

@WolfgangJeltsch烨作为我的岗位和医生说的目录应该是~/.vim/after/syntax没有~/.vimrc
statox

没错 但是,这只是我的评论中的错字。事实上,我曾在目录.vim和语法高亮没有工作,可能是因为这个bug 542
沃尔夫冈Jeltsch

不!不工作。
Yar

1

对于它的价值,我在MacVim(8.1.950(155))中遇到了这个问题。colorscheme在.vimrc中放置高亮语句后,为我修复了它。例如:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.