Custom syntax coloring vim

筅森魡賤 提交于 2021-01-01 04:54:16

问题


In vim can you call a theme for example, 'colo:desert' and colorize certain syntax which are not colorized like lets say i wanted to colorize the words "Access Validation" and "Panel" to green will Vim let met do that?

Below is my desert theme which i use to colorize my syntax

    " 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:


You can add arbitrary syntax highlighting. In my .vimrc, I have one to mark trailing whitespace in red:

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

In your case, you could do:

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

Then you just have to set up autocmds that runs the match command for BufWinEnter, BufWinLeave, InsertEnter, and InsertLeave:

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/

You can of course do it more fine-grained, if you just want it to apply to specific kinds of files.



来源:https://stackoverflow.com/questions/39841314/custom-syntax-coloring-vim

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!