colorscheme
在 Vim 中 colorscheme 指 Vim 的颜色主题,用于控制代码样式、背景色、文字色等。
定义 colorscheme
colorscheme 本质上就是 vim 定义的一系列内置环境变量,我们只需要为这些制定的环境变量赋值就能够控制指定颜色。他被要求位于 $VIMRUNTIME/colors
目录下的可执行文件:
其中 Normal、Comment、String 等都是 Vim 中规定的配置颜色的元素,而 guifg
表示前景色,guibg
表示背景色。还可以使用 gui
表示其他样式,例如 bold
和 italic
等。
Tips
具体支持那些配置颜色元素可以使用 :help highlight-groups
来进行查看。
应用 colorscheme
使用 :colorscheme <theme_name>
来应用指定的颜色主题,vim 会自动从 $VIMRUNTIME/colors
中获取可用的颜色主题。我们只需要将它添加到 $VIMRC
后就能够自动应用该主题了。
语法高亮 syntax
语法高亮就是让代码文件中的语法元素(关键字、字符串、注释等)以不同颜色显示出来,帮助区分代码中的各类成分提高代码的可读性。要想开启语法高亮使用:
语法高亮中的颜色是由 colorscheme 决定的,语法高亮的核心就是如何识别语法中的各个部分。他们的定义文件位于 $VIMRUNTIME/syntax
中,其中以 <filetype>.vim
这样的命名文件构成,其中的基本组成部分类似:
" 高亮注释,匹配以 # 开头的行
syntax match myComment "#.*"
" 高亮关键字
syntax keyword myKeyword if else while for
" 高亮字符串,匹配双引号中的内容
syntax region myString start=/"/ end=/"/
" 高亮数字,匹配任意数字
syntax match myNumber "\<\d\+\>"
syntax match
: 使用单个正则表达式匹配一行中的某些字符串syntax keyword
: 直接定义关键字syntax region
: 用于跨行定义范围
之后还需要在其中将语法规则映射到高亮组(highlight-groups),它是由 colorscheme 决定的:
highlight link myComment Comment
highlight link myKeyword Keyword
highlight link myString String
highlight link myNumber Number
Tips
Neovim 先对于 Vim 不同的一点就是内置了 Tree-sitter 来解析和高亮代码。先对于 vim 的基于正则表达式的 syntax 模块来说会更加准确和快速。
安装 colorscheme
有一个vimcolorschemes网站提供了开源社区流行的 colorscheme。可以在其中预览和选择需要的 colorscheme。之后只需要在 $VIMRC
中定义 :colorscheme <colors_name>
即可。
在 AstroNVim 中设置 Colorscheme
首先是安装配色方案,存在以下几种安装方式:
-- 通过自定义的方式配置
return {
"catppuccin/nvim",
name = "catppuccin",
opts = {
-- configuration options...
},
}
-- 有些插件是通过全局变量的形式初始化的而不是推荐的 setup() 方式
-- 此时自定义安装需要一些特殊的配置
return {
"sainnhe/sonokai",
init = function() -- init function runs before the plugin is loaded
vim.g.sonokai_style = "shusia"
end,
}
-- 如果 astrocommunity 中存在也可以通过他来安装
return {
"AstroNvim/astrocommunity",
{ import = "astrocommunity.colorscheme.catppuccin" },
}
安装完成后就需要配置默认颜色方案了,它位于AstroUI插件中: