给 Vim 找一款漂亮的主题,或如何编写属于自己的主题

9,048 阅读4分钟
原文链接: zhuanlan.zhihu.com

一款适合自己的主题,对于vim的写作来说至关重要。

Vim 默认的主题其实很一般。你可以在 Vim Colors 上轻松的找到很多主题, 但是多半主题都是已经年久失修,意思不是说主题不能用,而是作者很久不维护,很多语言的高亮和支持不太完善。


下载的主题, xxx.vim ,放入 Vim 目录下的 colors 文件夹中,这样vim启动时会被预加载, 另外,你也可以用 Vundle 已插件的形式将主题管理起来。


首先,我们在这里推荐几款比较热门的 Vim 主题 :

1. Solarized ( solarized/vim-colors-solarized at master · altercation/solarized · GitHub)

是一款比较热门的主题,很出名,各大IDE中均有此主题的配色样式,主题的优势主要是色调保护眼睛,支持也很全面,作者有持续更新, 同时支持大部分主流插件的高亮. 缺点是太大众化,已经烂大街,且没有什么特色.

2. GruvboxGitHub - morhetz/gruvbox: Retro groove color scheme for Vim

新秀主题,外国人通过修改 Solarized 所得。 作者几乎重构了 Solarized ,这款主题的优点在于他几乎支持市面上所有主流的Vim插件, 同时配色舒服让人眼前一亮。

3. BadwolfGitHub - sjl/badwolf: A Vim color scheme.

没错了,大名鼎鼎 Gundo 插件的作者,不过gundo 貌似已经年久失修了, 现在在用另外一个外国人维护的版本。 不过这不影响主题还是非常非常优秀的。 缺点在于 HTML 配色有点随意。


4. Codeschool GitHub - antlypls/vim-colors-codeschool: CodeSchool color theme for vim

相关文章 Vim for Ruby on Rails (and a sexy theme!) (via @AstonJ)

冷色调系列主题,主题总体来说配色不错,但是缺点在于对于很多插件的支持都不全面。

如何编写主题?

对以上的主题都不满意? 至今没有找到适合自己的主题? 没关系,自己动手,丰衣足食。

首先必须理解, Vim中的colorscheme ,也就是主题,实际上也是一种插件。 只是插件编写的形式, API使用 Vim 的 highlight 等之类的接口。


第一步,创建主题

你需要在 vim 的跟目录中,找到 colors 文件夹, 新建一个主题文件, 随意命名, 扩展名必须是已

.vim

结尾。

加入代码:

highlight clear
   " 先清除之前的高亮

if exists("syntax_on")   " 重置高亮
	syntax reset
endif

set background=dark  "主题风格设置为 dark

let g:colors_name="hellovim"   " 主题名称设置为 hellovim

那么,之后我们如何添加高亮? 首先必须了解 Vim 主题中, 高亮函数指令有那些, 以下两种主要函数:

hi Normal guifg=#990808 guibg=black ctermfg=255 ctermbg=20 gui=bold cterm=none

hi link Mystyle Normal
 

第一行:

hi 样式名称 guifg=Gvim字体颜色 guibg=Gvim背景颜色 ctermfg=终端Vim字体颜色 ctermbg=终端Vim背景颜色 gui=Gvim字体样式 cterm=终端Vim字体样式

hi 的意思是 highlight,也就是它的缩写。 Normal 代表初始化时候的样式,常规样式, guifg 意思是,在 GVim 中(带有图形界面的Vim) ,字体的颜色是#990808 , 而 guibg 意思就是 背景色是black黑色, ctermfg 代表了 vim 在 Linux 下的 terminal 终端里的字体配色, terminal 只有 256色, 所以具体, 你需要查询 256 色值表,每个数字具体代表了什么颜色, 而最后的 gui cterm 则是代表了字体的样式,你可以设置为bold(粗体) , 也可以设置为none(常规) , 下面是色值表:


第二行:

hi link 子样式 被继承的父样式

link 的主要作用就是让 Mystyle 继承 Normal的配色样式。 让 Mystyle 拥有 Normal同样的样式。 也就不需要重复写 highlight 了。 修改 Normal时候同样会影响到 Mystyle.


Vim 中有许多样式名称,排版顺序根据个人的喜好 具体可以参考源码:

Codeschool 源码 ——>

建议需要写样式的朋友可以多看几款样式的源码,然后开始动手,至于如何检测样式名,我以后更新= =。囧~~


写在后面:同样有喜欢Vim的朋友们,如果你们有好的文章,都可以私信我,当然,并不是我来发表,而是我邀请你来专栏写文章,共同 Building 这个专栏哦~