首页 > 解决方案 > 如何在 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 可以一次加载多个语法文件吗?

标签: vim

解决方案


TL;DR:一切(大部分)都很好。颜色方案和语法脚本之间存在差异。

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

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

因此,对于一组符合您个人品味的精美配色,您可以选择配色方案。对你来说,那就是colorscheme PaperColor请注意在选择颜色之前background需要设置(并且您错过了命令)::set

syntax on
set background=light
colorscheme PaperColor

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

如您所见,颜色方案和语法脚本各有不同的作用,并一起发挥作用。虽然前者是全球个人选择,但后者是根据检测到的文件类型激活的,每个缓冲区都不同。


推荐阅读