Vim高亮当前行(显示为下划线)的解决方案
最近配置Vim,由于以前的vimrc早已丢失,只好重新配置一份,此为题外话,略过不提…
在Vim中,可以选择开启高亮当前行
,这是一个很不错的特性。开启它也很简单,只需要在vimrc中加入这么一行:
1 | set cursorline |
或者
1 | set cul |
即可。
在gvim中,这样配置一般都能起作用,你会看到当前行被高亮了。但是在终端中,却很可能会出现问题,如果你发现本该被高亮的行没有高亮,而行底部却出现了一条下划线的话(如下图),就需要做一些额外的配置了。
Vim中有一个命令叫highlight
,通过它可以自定义或者查看很多元素的配色方案,具体的作用可以自行:help highlight
查看,我们用它来对高亮行做一些设置。
在vimrc中加入:
1 | hi CursorLine term=bold cterm=bold ctermbg=Red |
别忘了加载配置。
嗯,当前行不仅被高亮成了红色,而且还变成了粗体,这就是命令中bold
和Red
的效果,其中cterm=bold
就是指定在终端中被高亮的行变为粗体,而 ctermbg=Red
就是指定高亮行在终端中的背景色,其他的选项还有ctermfg(前景色)
,guibg(gvim中的背景色)
等等,这里就不赘述了。
这里是term=
或cterm=
等可选的选项:
这里是ctermbg=
可选的颜色:
前面的数字有什么用,我就不细说了。这里可以看到,有若干定义好的颜色可供选择,比如上面ctermbg=Red
就是选择了这里的红色。
可能很多人和我一样,每种颜色都试了那么一下,却发现全部都不满意,自然而然的会想到,能否用RGB的形式自定义颜色呢?让我们先来试验一下,修改命令为:
1 | hi CursorLine term=bold cterm=bold ctermbg=#FFD4E4 |
很可惜,你会得到vim的error信息:
难道就没办法自定义颜色了吗?别急,虽然无法自定义颜色,却可以让可选择的颜色多一些,Vim中默认的这几种颜色是为8位色终端定义的,应该是为了兼容一些很原始的环境。比如我的环境是CentOS Linux release 7.2.1511 (Core)
,不带图形界面。CentOS的终端默认开启的是8位色模式,查看自己的终端所处的颜色模式,可以在shell中输入:
1 | echo $TERM |
如果打印的结果中不含有256color
,就表明你的终端并没有开启256色模式,可供选择的颜色可能不足。我们可以将终端配置为256色模式,以我的环境为例,执行以下命令:
1 | sudo sh -c "echo 'export TERM=xterm-256color' >> /etc/profile" |
回到Vim,执行:
1 | :hi CursorLine term=bold cterm=bold ctermbg=237 |
高亮行的背景变成了淡淡的灰色
这里的ctermbg=237
是256色中某个颜色的编号,可以查询这里256色展示