在Vim中自定义语法高亮显示

JAV*_*AVH 6 vim vim-syntax-highlighting

如何突出以sql_引号开头并在引号内的字符串?

我的日志文件:

MGPostgreSQLConnection.OpenQuery; "sql_p_factory_history"-ExecTime: 47ms
2010-11-12T17:28:18+01:00;custom; MGPostgreSQLConnection.OpenQuery; "sql_p_factory_history"-ExecTime+FetchTime: 47ms
2010-11-12T17:28:18+01:00;custom; MGPostgreSQLConnection.OpenQuery; "sql_factory"-ExecTime: 47ms
2010-11-12T17:28:18+01:00;custom; MGPostgreSQLConnection.OpenQuery; "sql_factory_contactperson"-ExecTime+FetchTime: 62ms
Run Code Online (Sandbox Code Playgroud)

我的vimrc(当然这不起作用):

au BufRead,BufNewFile *.log syn match "sql_*"
au BufRead,BufNewFile *.log hi sql guifg=white guibg=red
Run Code Online (Sandbox Code Playgroud)

Joh*_*web 6

你快到了!此版本(工作和)不突出显示引号.

au BufRead,BufNewFile *.log hi sql guifg=white guibg=red ctermfg=white ctermbg=red
au BufRead,BufNewFile *.log syn match sql /"\zssql_\w*\ze"/
Run Code Online (Sandbox Code Playgroud)

屏幕截图

有关更多信息,请参阅以下内容

  • :help :syn-match "用于语法匹配,erm,语法
  • :help /\zs "在那里设定了比赛的开始
  • :help /\ze "在那里设定了比赛的结束
  • :help /\w "字符

调试:

该命令:verbose :syn应该给你这样的东西:

--- Syntax items ---
[...]
sql            xxx match /"\zssql_\w*\ze"/
Run Code Online (Sandbox Code Playgroud)

而且:verbose :hi:

        Last set from ~/.vimrc
[...]
sql            xxx cterm=bold ctermfg=7 ctermbg=1 guifg=white guibg=red
Run Code Online (Sandbox Code Playgroud)

xxx应该与您指定的颜色相同(并且看起来像我的屏幕截图中的突出显示).如果您没有看到,请检查您的.vimrc(或_vimrc在Windows上)是否来自:

:scriptnames
1: /home/javh/.vimrc
[...]
Run Code Online (Sandbox Code Playgroud)

当然这只适用于:

:echo has('syntax')
Run Code Online (Sandbox Code Playgroud)

...返回1(或:version包括+syntax).