自定义语法着色vim

时间:2016-10-03 22:21:28

标签: vim syntax colors

在vim中你可以调用一个主题,例如'colo:desert'并着色某些没有着色的语法,比如说我想将“访问验证”和“面板”这些词着色为绿色将Vim让我遇见是什么?

下面是我的沙漠主题,我用它来着色我的语法

    " cool help screens
    " :he group-name
    " :he highlight-groups
    " :he cterm-colors

    set background=dark
    if version > 580
        " no guarantees for version 5.8 and below, but this makes it stop
        " complaining
        hi clear
        if exists("syntax_on")
            syntax reset
        endif
    endif
    let g:colors_name="desert"

    hi Normal       guifg=White guibg=grey20

    " highlight groups
    hi Cursor       guibg=khaki guifg=slategrey
    "hi CursorIM
    "hi Directory
    "hi DiffAdd
    "hi DiffChange
    "hi DiffDelete
    "hi DiffText
    "hi ErrorMsg
    hi VertSplit    guibg=#c2bfa5 guifg=grey50 gui=none
    hi Folded       guibg=grey30 guifg=gold
    hi FoldColumn   guibg=grey30 guifg=tan
    hi IncSearch    guifg=slategrey guibg=khaki
    "hi LineNr
    hi ModeMsg      guifg=goldenrod
    hi MoreMsg      guifg=SeaGreen
    hi NonText      guifg=LightBlue guibg=grey30
    hi Question     guifg=springgreen
    hi Search       guibg=peru guifg=wheat
    hi SpecialKey   guifg=yellowgreen
    hi StatusLine   guibg=#c2bfa5 guifg=black gui=none
    hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
    hi Title        guifg=indianred
    hi Visual       gui=none guifg=khaki guibg=olivedrab
    "hi VisualNOS
    hi WarningMsg   guifg=salmon
    "hi WildMenu
    "hi Menu
    "hi Scrollbar
    "hi Tooltip

    " syntax highlighting groups
    hi Comment      guifg=SkyBlue
    hi Constant     guifg=#ffa0a0
    hi Identifier   guifg=palegreen
    hi Statement    guifg=khaki
    hi PreProc      guifg=indianred
    hi Type         guifg=darkkhaki
    hi Special      guifg=navajowhite
    "hi Underlined
    hi Ignore       guifg=grey40
    "hi Error
    hi Todo         guifg=orangered guibg=yellow2

    " color terminal definitions
    hi SpecialKey   ctermfg=darkgreen
    hi NonText      cterm=bold ctermfg=darkblue
    hi Directory    ctermfg=darkcyan
    hi ErrorMsg     cterm=bold ctermfg=7 ctermbg=1
    hi IncSearch    cterm=NONE ctermfg=yellow ctermbg=green
    hi Search       cterm=NONE ctermfg=grey ctermbg=blue
    hi MoreMsg      ctermfg=darkgreen
    hi ModeMsg      cterm=NONE ctermfg=brown
    hi LineNr       ctermfg=3
    hi Question     ctermfg=green
    hi StatusLine   cterm=bold,reverse
    hi StatusLineNC cterm=reverse
    hi VertSplit    cterm=reverse
    hi Title        ctermfg=5
    hi Visual       cterm=reverse
    hi VisualNOS    cterm=bold,underline
    hi WarningMsg   ctermfg=1
    hi WildMenu     ctermfg=0 ctermbg=3
    hi Folded       ctermfg=darkgrey ctermbg=NONE
    hi FoldColumn   ctermfg=darkgrey ctermbg=NONE
    hi DiffAdd      ctermbg=4
    hi DiffChange   ctermbg=5
    hi DiffDelete   cterm=bold ctermfg=4 ctermbg=6
    hi DiffText     cterm=bold ctermbg=1
    hi Comment      ctermfg=darkcyan
    hi Constant     ctermfg=brown
    hi Special      ctermfg=5
    hi Identifier   ctermfg=6
    hi Statement    ctermfg=3
    hi PreProc      ctermfg=5
    hi Type         ctermfg=2
    hi Underlined   cterm=underline ctermfg=5
    hi Ignore       cterm=bold ctermfg=7
    hi Ignore       ctermfg=darkgrey
    hi Error        cterm=bold ctermfg=7 ctermbg=1

    :setf sql
    :set number
    :highlight LineNr Ctermfg=red
    :set nowrap

    "vim: sw=4

1 个答案:

答案 0 :(得分:1)

您可以添加任意语法突出显示。在我的.vimrc中,我有一个用红色标记尾随空格:

highlight ExtraWhitespace ctermbg=1 guibg=red
match ExtraWhitespace /\s\+$/

在你的情况下,你可以这样做:

highlight StackOverflow ctermfg=DarkGreen
match StackOverflow /Panel\|Access Validation/

然后,您只需设置为matchBufWinEnterBufWinLeaveInsertEnter运行InsertLeave命令的autocmds:

autocmd BufWinEnter * match StackOverflow /Panel\|Access Validation/
autocmd BufWinLeave * match StackOverflow /Panel\|Access Validation/
autocmd InsertEnter * match StackOverflow /Panel\|Access Validation/
autocmd InsertLeave * match StackOverflow /Panel\|Access Validation/

如果您只想将其应用于特定类型的文件,您当然可以做得更精细。