自定义语法着色vim

自定义语法着色vim,vim,syntax,colors,Vim,Syntax,Colors,在vim中,您可以调用一个主题,例如“colo:desert”,并将某些语法着色,这些语法没有着色,比如说我想将“访问验证”和“面板”的单词着色为绿色vim会让met这样做吗 下面是我的沙漠主题,我用它来着色我的语法 " cool help screens " :he group-name " :he highlight-groups " :he cterm-colors set background=dark if version > 5

在vim中,您可以调用一个主题,例如“colo:desert”,并将某些语法着色,这些语法没有着色,比如说我想将“访问验证”和“面板”的单词着色为绿色vim会让met这样做吗

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

    " 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

可以添加任意语法高亮显示。在我的
.vimrc
中,我有一个将尾部空白标记为红色:

highlight ExtraWhitespace ctermbg=1 guibg=red
match ExtraWhitespace /\s\+$/
在您的情况下,您可以:

highlight StackOverflow ctermfg=DarkGreen
match StackOverflow /Panel\|Access Validation/
然后,您只需设置运行
BufWinLeave
BufWinLeave
InsertEnter
InsertLeave
match
命令的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/

当然,如果您只想将其应用于特定类型的文件,您可以进行更细粒度的操作。

我所需要做的就是复制
高亮显示StackOverflow ctermfg=DarkGreen
匹配StackOverflow/Panel\|访问验证/
这两行并将其粘贴到代码底部。谢谢