自己动手扩展vim插件——配色篇

自己动手扩展vim插件——配色篇

By 马冬亮(凝霜  Loki)

一个人的战争(http://blog.csdn.net/MDL13412)

本文背景

用过功能稍微完善一点的编辑器的朋友都知道,可以在设置中自定义字体颜色、背景颜色、关键字颜色等,从而提升我们的开发效率。而对于vim这样的编辑器来说,当然少不了这些功能,不但如此,在下文我将给大家展示其他编辑器所望尘莫及的灵活性。

vimcolorschemetest站点上,有数以千计的vim主题插件,然而每款主题或多或少都有我们不满意的地方,这就需要我们自己动手来进行扩展。本文就是我在定制vim主题时的一些经验心得,特此分享给广大vimer.

基础知识

  • 在vim中,主题也是以插件形式存在的。其中系统自带的主题,存放在$VIMRUNTIME/colors文件夹下,以*.vim命名。(注:查看$VIMRUNTIME请在vim中执行 :echo $VIMRUNTIME
  • 用户自定义的主题一般不放在系统目录下,而是放在~/.vim/colors目录下,这样不会干扰到其他用户,同时也方便备份自己的vim配置。
  • 更换vim主题的命令为:

:colorscheme 主题插件名称
  • 但是这样只能临时改变vim主题,退出后又会恢复原样,如果想永久改变,请在~/.vimrc中添加:

colorscheme 主题插件名称

准备工作

由于我不使用Windows下的gvim,而是在linux下或远程ssh使用终端下的vim,因此首先需要在~/.vimrc中添加开启256颜色支持:

set t_Co=256

为了能在编辑程序时高亮显示关键字,还需要在~/.vimrc中开启语法高亮显示:

syntax enable
syntax on 
做完上述的准备工作后,让我们正式开始定制主题之旅吧!

定制主题

主题色调

在配置其他属性前,首先要配置主题整体的色调,只有两个选择:dark和light(暗色调和亮色调)。对于经常阅读和编写代码的程序员来说,暗色调是更好的选择:

set background=dark
接下来,需要重新设置一下语法高亮,否则设置不会生效:

if version > 580
    hi clear
    if exists("syntax_on")
        syntax reset
    endif
endif

主题名称

主题名称是无参数调用 :colorscheme 时返回的信息,用于分辨不同主题,其设置如下:

let g:colors_name="nslib_color256"

基础属性

由于vim可以在黑白终端、彩色终端、GUI界面下运行,所以需要对其分贝进行配置,下面给出一个简要的文档说明:

term         黑白终端的属性
cterm        彩色终端的属性
ctermfg      彩色终端前景色
ctermbg      彩色终端背景色
gui          GUI属性
guifg        GUI前景色
guibg        GUI背景色
对于黑白终端,我们没有配置的必要,因此主要的配置工作集中在彩色终端与GUI界面上,又由于彩色终端与GUI界面的配置只是关键字不同,因此这里只选取彩色终端进行说明。

由于不是所有终端都支持256色,因此使用一些安全色会使我们的主题更有移植性,而GUI可以支持所有颜色,不在考虑范围之内,vim文档给出的安全色如下:

"0      Black  
"1      DarkBlue  
"2      DarkGreen        
"3      DarkCyan 
"4      DarkRed
"5      DarkMagenta        
"6      Brown, DarkYellow            
"7      LightGray, LightGrey, Gray, Grey                   
"8      DarkGray, DarkGrey   
"9      Blue, LightBlue     
"10     Green, LightGreen          
"11     Cyan, LightCyan                    
"12     Red, LightRed                         
"13     Magenta, LightMagenta 
"14     Yellow, LightYellow   
"15     White     

配色语法
下面举例说明配色语法:

hi Type             ctermfg=LightYellow     ctermbg=Black           cterm=bold
其中, hihighlight命令的缩写,用于高亮配置; Type是要配色的元素名称;参数采用的是 Key=Value的形式。

元素列表
配置颜色的语法非常简单,无需累赘,下面将分类介绍常用的元素标签:

状态栏提示信息

hi StatusLine       状态栏
hi StatusLineNC     非当前窗口的状态栏
ErrorMsg            错误信息
WarningMsg          警告信息
ModeMsg             当前模式
MoreMsg             其他文本
Question            询问用户
Error               错误

文本搜索

hi IncSearch        增量搜索时匹配的文本符串
hi Search           匹配的文本串

弹出菜单
Pmenu               弹出菜单
PmenuSel            菜单当前选择项
窗体边框相关

VertSplit           垂直分割窗口的边框
LineNr              行号
Cursor              光标所在字符
CursorLine          光标所在行
ColorColumn         光标所在列
ColorColumn         标尺
NonText             窗口尾部的~和@,以及文本里实际不显示的字符

diff模式
DiffAdd             diff模式增加的行
DiffChange          diff模式改变的行
DiffDelete          diff模式删除的行
DiffText            diff模式插入文本
C/C++语法
Comment             注释
PreProc             预处理
Type                数据类型
Constant            常量
Statement           控制语句
Special             字符串中的中的特殊字符
String              字符串
cCppString          Cpp字符串
Number              数字
Todo                TODO、HACK、FIXME等标签

我的主题

截图


配置文件

set background=dark


if version > 580
    hi clear
    if exists("syntax_on")
        syntax reset
    endif
endif


let g:colors_name="nslib_color256"
  
hi Normal               ctermfg=Grey            ctermbg=Black       
hi ColorColumn          ctermfg=White           ctermbg=Grey
                                               ·
hi ErrorMsg             term=standout           
hi ErrorMsg             ctermfg=LightBlue       ctermbg=DarkBlue    
hi WarningMsg           term=standout           
hi WarningMsg           ctermfg=LightBlue       ctermbg=DarkBlue    
hi ModeMsg              term=bold               cterm=bold          
hi ModeMsg              ctermfg=LightBlue       ctermbg=Black       
hi MoreMsg              term=bold               ctermfg=LightGreen  
hi MoreMsg              ctermfg=LightBlue       ctermbg=Black       
hi Question             term=standout           gui=bold
hi Question             ctermfg=LightBlue       ctermbg=Black       
hi Error                term=bold               cterm=bold          
hi Error                ctermfg=LightBlue       ctermbg=Black       
                                               ·
hi LineNr               ctermfg=LightBlue       ctermbg=Black       
hi CursorColumn         ctermfg=White           ctermbg=Grey        
hi CursorLine           ctermfg=LightBlue       ctermbg=Black       
hi ColorColumn          ctermfg=White           ctermbg=Grey        
                                               ·
hi IncSearch            ctermfg=Black           ctermbg=DarkGrey    
hi Search               ctermfg=Black           ctermbg=DarkGrey    
hi StatusLine           term=bold               cterm=bold          
hi StatusLine           ctermfg=Black           ctermbg=Grey        
hi StatusLineNC         term=bold               cterm=bold          
hi StatusLineNC         ctermfg=Black           ctermbg=Grey        
                                               ·
hi VertSplit            ctermfg=Grey            ctermbg=Grey        
hi Visual               term=bold               cterm=bold          
hi Visual               ctermfg=Black           ctermbg=Grey        
                                               ·
highlight Pmenu         ctermfg=Black           ctermbg=Grey      
highlight PmenuSel      ctermfg=LightBlue       ctermbg=DarkBlue  
            ·
hi Comment              ctermfg=DarkCyan        ctermbg=Black
hi PreProc              ctermfg=Blue            ctermbg=Black
hi Type                 ctermfg=LightYellow     ctermbg=Black           cterm=bold
hi Constant             ctermfg=Blue            ctermbg=Black           cterm=bold
hi Statement            ctermfg=LightYellow     ctermbg=Black           cterm=bold
hi Special              ctermfg=Red             ctermbg=Black           cterm=bold
hi SpecialKey           ctermfg=Red             ctermbg=Black           cterm=bold
hi Number               ctermfg=Blue            ctermbg=Black
hi cCppString           ctermfg=Red             ctermbg=Black
hi String               ctermfg=Red             ctermbg=Black
hi Identifier           ctermfg=Red             ctermbg=Black           cterm=bold
hi Todo                 ctermfg=Black           ctermbg=Gray            cterm=bold
hi NonText              ctermfg=LightBlue       ctermbg=Black
hi Directory            ctermfg=Blue            ctermbg=Black
hi Folded               ctermfg=DarkBlue        ctermbg=Black           cterm=bold
hi FoldColumn           ctermfg=LightBlue       ctermbg=Black
hi Underlined           ctermfg=LightBlue       ctermbg=Black           cterm=underline
hi Title                ctermfg=LightBlue       ctermbg=Black
hi Ignore               ctermfg=LightBlue       ctermbg=Black


hi Directory            ctermfg=LightBlue       ctermbg=Black
hi browseSynopsis       ctermfg=LightBlue       ctermbg=Black
hi browseCurDir         ctermfg=LightBlue       ctermbg=Black
hi favoriteDirectory    ctermfg=LightBlue       ctermbg=Black
hi browseDirectory      ctermfg=LightBlue       ctermbg=Black
hi browseSuffixInfo     ctermfg=LightBlue       ctermbg=Black
hi browseSortBy         ctermfg=LightBlue       ctermbg=Black
hi browseFilter         ctermfg=LightBlue       ctermbg=Black
hi browseFiletime       ctermfg=LightBlue       ctermbg=Black
hi browseSuffixes       ctermfg=LightBlue       ctermbg=Black


hi TagListComment       ctermfg=LightBlue       ctermbg=Black
hi TagListFileName      ctermfg=LightBlue       ctermbg=Black
hi TagListTitle         ctermfg=LightBlue       ctermbg=Black
hi TagListTagScope      ctermfg=LightBlue       ctermbg=Black
hi TagListTagName       ctermfg=LightBlue       ctermbg=Black
hi Tag                  ctermfg=LightBlue       ctermbg=Black

总结

vim的灵活性极强,可以配置其他编辑器无法配置的选项,很适合我这种喜欢折腾的人:-)

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 这是一个使用Vim编辑器的命令,意思是列出当前所有可用的颜色主题。其中"\xe6\x89\x80\xe6\x9c\x89\xe9\x85\x8d\xe8\x89\xb2"是一个十六进制编码的字符串,表示"所有配色"。 ### 回答2: vim是一个非常流行的文本编辑器,它有许多默认的配色方案。但是对于不同的用户,他们对颜色的喜好是不同的,因此vim提供了非常灵活的配置方式,可以自定义配色方案。以下是vim的所有配色方案: 1. default:vim的默认配色方案。 2. evening:一种较暗的配色方案,常用于夜间编辑。 3. industry:一种专业的配色方案,适合写代码。 4. kate:一种明亮的配色方案,也适合写代码。 5. desert:一种沙漠风格的配色方案,颜色有些深。 6. pablo:一种较为柔和的配色方案,颜色较浅。 7. peachpuff:一种桃红色的配色方案,非常适合女性用户使用。 8. ron:一种冷色调的配色方案,颜色较为柔和。 9. shine:一种较为视觉冲击的配色方案,非常适合展示。 10. slate:一种灰黑色调的配色方案,非常适合写代码。 11. tango:一种非常流行的配色方案,颜色适中,非常适合大多数用户使用。 12. torte:一种棕色调的配色方案,代表暖和与实力。 以上是vim的所有配色方案,用户可以根据自己的喜好进行个性化配置。在vim编辑器中,使用命令"colorscheme"加上配色方案的名称,就可以切换到相应的配色方案。例如,如果我想将配色方案切换成peachpuff,可以使用命令":colorscheme peachpuff"。 ### 回答3: vim colorscheme 是 vim 文本编辑器中的一个功能,它可以为用户提供不同的主题和颜色配色方案,使用户在编辑代码时更加舒适和高效。 在 vim 中,可以使用命令行的方式设置并切换不同的 colorscheme。系统中常见的 colorscheme 有以下几种: 1. desert:这是 vim 的默认配色方案,它使用棕色、黄色、灰色等中性色调,使得代码能够被清晰地区分出来。 2. evening:这是一种简洁而明亮的配色方案,它使用了淡蓝色、灰色、白色等明亮的颜色,使代码看起来更加清晰明了。 3. peachpuff:这是一种温和而柔和的配色方案,它使用了淡黄色、浅粉色、浅灰色等柔和的颜色,使得代码看起来更加柔和。 4. murphy:这是一种暗色调的配色方案,它使用了暗红色、暗绿色、棕色等暗色调,给人以沉稳和深邃感。 5. ron:这是一种比较鲜艳明亮的配色方案,它使用了红色、黄色等明亮的颜色,使得代码看起来更加醒目。 以上就是几种常见的 vim colorscheme 配色方案,当然,还有很多其他的 colourscheme 可供选择,用户可以根据个人喜好和需要进行选择。无论是哪种配色方案,它都能够提高用户在编辑代码时的舒适感和效率,让用户可以更加方便地编写出高质量的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值