在Vim中设置自定义语法关键字的颜色?

时间:2015-05-03 20:33:53

标签: vim syntax-highlighting vim-syntax-highlighting

我在vim中使用了一个语法文件,它定义了许多特定于文件类型的语法关键字。为了对这种类型的文件着色,我还为共享目录创建了一个colorscheme文件,试图突出显示这些语法关键字,但是当我打开该扩展名的文件时它们不会生效。

我的颜色文件会突出显示普通组,例如NormalSpecialComment等。当我尝试将这些突出显示命令移动到我的.vimrc文件时,他们仍然没有效果。但是,在vim中加载文件后,手动输入突出显示命令将按预期工作。

为了使用语法文件中定义的语法关键字,我需要做些什么特别的事情吗?我是否需要指定语法文件的加载顺序&我的.vimrc中的颜色文件?

编辑:使用:scriptnames,我能够看到我的自定义colorscheme文件在语法文件之前加载很久,实际上最后加载了死文件。但是,我的.vimrc文件将colorscheme CustomPersonal指定为最后一行,远在syntax on之后。

2 个答案:

答案 0 :(得分:2)

Vim有一个内置的机制来覆盖语法组,所以如果你做的一切都正确(即使在你的~/.vimrc中),这应该有效。 @MatthewStrawbridge建议的解决方案可能有效,但感觉不对,因为在Vim中colorschemes是 global ,因此不应在ftplugin中指定。

以下是压倒性的工作原理:

Vim中的大多数文件类型(如python)都带有定义突出显示组的语法(通过:highlight查看)。然后,这些特定组(例如pythonFunction链接到一组默认组(:help highlight-groups,例如Identifier)。然后, colorscheme 为默认组提供前景/背景颜色和/或格式(如粗体和斜体(分别用于终端,颜色终端和/或GVIM))的组合。

高亮组→默认组→颜色+样式
pythonFunctionIdentifierterm=underline ctermfg=3 guifg=DarkCyan

因此,对于一组符合您个人品味的精美匹配颜色,您可以选择颜色方案。为了调整某些特定关联,您可以更改突出显示组与默认组的链接,例如:

:hi link pythonFunction Special

这已经可以在~/.vimrc中完成。只要语法脚本正确使用:hi def link,就会保留您建立的原始链接; def[ault]参数确保仅在尚未存在链接的情况下才会创建链接。

答案 1 :(得分:1)

当你第一次启动Vim时,你的.vimrc会被运行;在文件加载之前,语法文件不会被应用,听起来它会覆盖您的设置。

相反,您可以将自定义配色方案放在~/.vim/after/syntax/<filetype>.vim而不是CustomPersonal.vim(或者至少从那里调用它)。

另一种方法是在autocmd添加.vimrcCustomPersonal.vim来源Player | Week 1 | Week 2 | Week 3 1 | 11 | 19 | 7 2 | 14 | 12 | 10 3 | 9 | 15 | 13 以响应合适的事件。