本文首发于我的个人博客,欢迎点击访问,无广告节面简洁!
最近重新开始学习Vim装上了WSL2,但发现Windows Terminal和vim的组合还是有很多问题需要解决的,由其默认的配色在某些状态下根本看不清字体,所以折腾了下自定义配色。
其实Vim是有很多自定义配色的插件,也尝试安装过,发现和Windows Terminal不兼容,配色非常奇怪,还是自己配色比较稳妥,如果是linux/mac用户完全可以在vimcolor上选择一个喜欢的配色进行配置。
我Windows Terminal采用的是魔改后的OneHalfDark配色(一开始以为vim的问题可以用配色解决,最后发现不行)
可以看下对比效果,左侧是git bash终端默认的配色,右侧是我改动后的配色,由其在visual模式下看起来舒服很多了
256色
现在的terminal都支持256色了,vim的配置一般会用这个256个颜色,所以知道对应的几个颜色,这256色的配置是来源是terminal的scheme,可以通过脚本来查看terminal配置的256色;这是我的配置颜色
基础配置
自带配置文件
vim默认的配置路径在ubuntu下是/usr/share/vim/vim82/
(这里vim82与vim版本有关),颜色的的配置文件夹在colors
下,可以看到一些默认的配色,如果想要在原来的配置上魔改一下,可以从这里复制一份出来,默认的配置是default.vim
。
➜ colors ls
blue.vim delek.vim evening.vim lists pablo.vim shine.vim torte.vim
darkblue.vim desert.vim industry.vim morning.vim peachpuff.vim slate.vim zellner.vim
default.vim elflord.vim koehler.vim murphy.vim ron.vim tools
自定义的颜色配置放置在~/.vim/colors/
下,比如我的文件名叫做diy.vim
查看及切换配置
切换配置文件配置
在编辑器中,可以通过:colorscheme
+ 查看可用的配置
可以用:hi
(highlight的简写)查看配置中的文件,也可以查看当前哪个配置有问题,方便修改
配置文件及参数
前置配置
这些配置是从默认配置复制来的,放在配置文件最前面即可。
" Remove all existing highlighting and set the defaults.
" 清除所有的配置
hi clear
" Load the syntax highlighting defaults, if it's enabled.
" 加载高光
if exists("syntax_on")
syntax reset
endif
" Set color scheme name
" 设置配置文件名称
let colors_name = "diy"
高亮配置
在vim的配置中,针对不同的样式有不同的高亮方案,最终形成了一个有高亮的vim编辑器,常见的配置有以下三种:
" Color configuration to a style
hi Folded ctermfg=14 ctermbg=242 guifg=DarkCyan guibg=LightGrey term=standout
" Set the style without extra highlight
LineNrAbove xxx cleared
" Set a style same as another style
CursorLineSign xxx links to SignColumn
我们一般只需要修改第一种实际带有颜色的配置即可,它的写法如下:
hi <style_name> ctermfg=<font_color> ctermbg=<background_color> guifg=<font_color> guibg=<background_color> term=<text_style> gui=<text_style> cterm=<text_style>
第一个是样式名称,我们可以通过:hi
查看想要配置的样式;
后面的配置从范围上可以分为:
- 针对彩色终端(color terminal)的配置:
ctermfg
,ctermbg
和cterm
- 针对gui的配置:
guifg
,guibg
和gui
- 针对常规终端:
term
;因为常规终端是黑白配色的,所以没有颜色配置
从配置样式上可以分为:
- 字体颜色:
ctermfg
,guifg
- 背景颜色:
ctermbg
,guibg
- 字体样式:
cterm
,gui
,term
我是在终端配置的,也就是只需要配置ctermfg
,ctermbg
和cterm
,但为了防止修改修改导致以后使用gui显示不正常,我会一同配置gui的颜色;如果不需要覆盖某种配置(比如不需要背景色),就不需要配置这个参数
Terminal和GUI配置的最大区别是terminal只可以用256色,但是GUI可以用RGB颜色来配置(更多的颜色选择),在配置terminal时我们可以对照前面提到的256色卡来判断颜色的选择。
在字体颜色的配置上,我们常用0-15(终端内配置的色彩) / 232-255(灰度)进行配置,比如ctermfg=11
配置字体颜色为浅黄色
字体样式有以下选择:
- bold
- underline
- undercurl 一般仅在GUI中有效
- reverse
- inverse same as reverse
- italic
- standout
- NONE no attributes used (used to reset it)
以下这个配置,可以看到它设置了terminal和GUI字体颜色是黄色,在GUI和普通黑白终端中字体加粗,在颜色终端中是下划线
hi CursorLineNr ctermfg=11 guifg=Yellow gui=bold term=bold cterm=underline
在我们能看懂配置后,就可以在原有的配置上进行魔改,设置成自己喜欢的颜色
我的配置
" Diy Vim color file for Windows Terminal with One Dark
hi clear Normal
set bg&
" Remove all existing highlighting and set the defaults.
hi clear
" Load the syntax highlighting defaults, if it's enabled.
if exists("syntax_on")
syntax reset
endif
let colors_name = "diy"
hi LineNr ctermfg=11 guifg=Yellow cterm=none
hi CursorLineNr ctermfg=11 guifg=Yellow gui=bold term=bold cterm=underline
hi Search ctermfg=8 ctermbg=11 guifg=Black guibg=Yellow term=reverse
hi Statement ctermfg=11 guifg=Yellow gui=bold term=bold
hi SignColumn ctermfg=14 ctermbg=242 guifg=Cyan guibg=Grey term=standout
hi FoldColumn ctermfg=14 ctermbg=242 guifg=Cyan guibg=Grey term=standout
hi Folded ctermfg=14 ctermbg=242 guifg=DarkCyan guibg=LightGrey term=standout
hi Visual ctermbg=242 guibg=LightGrey term=reverse
Reference
Day 12:vim 配色方案
如何编写属于自己的Vim主题
How to control/configure vim colors
oeasy教您玩转vim - 24 - 自定颜色
Vim Doc - Syntax