如何在Vim中使用不同的colorcheme和语法突出显示?

时间:2019-02-13 01:33:57

标签: vim

假设我要使用以下颜色方案: https://github.com/NLKNguyen/papercolor-theme

我将PaperColor.vim文件复制到.vim / colors并制作了.vimrc:

syntax on
colorscheme PaperColor
background=light

现在,我想对haskell文件使用以下语法高亮显示:https://github.com/raichoo/haskell-vim/tree/master/syntax

有两个语法突出显示文件。我应该使用哪一个,并将其放在哪里?

谢谢!

我是否将其放在./vim/syntax中,并且vim会自动加载./vim/syntax文件夹中的所有文件?

似乎要自动加载haskell.vim。但是不会加载cabal.vim。想知道我打开.hs文件时是否只加载haskell.vim吗?我正在努力做到这一点。 vim可以一次加载多个语法文件吗?

1 个答案:

答案 0 :(得分:1)

TL; DR :(基本上)一切正常。 colorchemes和语法脚本之间是有区别的。

Vim中的

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

突出显示组→默认组→颜色+样式
pythonFunctionIdentifierterm=underline ctermfg=3 guifg=DarkCyan

因此,要选择一组适合您个人口味的精美匹配颜色,请选择一种配色方案。对您来说,这就是colorscheme PaperColor请注意:在选择颜色之前,需要先设置background,(并且您已经错过了:set命令):

syntax on
set background=light
colorscheme PaperColor

语法脚本知道如何解析某种语法(对您来说: haskell cabal ;激活的内容取决于文件类型检测 ,通常可以做正确的事,但是您也可以手动覆盖它(:setlocal syntax=cabal);我认为前者是针对Haskell源代码的,而cabal是软件包的定义)。它们基本上可以识别某些语法元素,并将它们链接到通用的 highlight组(例如StatementStringComment等)。现在,这些颜色的颜色(例如,粗绿色)由您选择的颜色方案决定。

如您所见,colorschemes和语法脚本各自具有不同的作用,并且可以一起发挥作用。前者是全局的个人选择,而后者是根据检测到的文件类型激活的,每个文件都不同。