如何突出显示以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
我的vimrc(当然这不起作用):
au BufRead,BufNewFile *.log syn match "sql_*"
au BufRead,BufNewFile *.log hi sql guifg=white guibg=red
答案 0 :(得分: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"/
有关详细信息,请参阅以下内容:
:help :syn-match
“用于语法匹配,erm,语法:help /\zs
“设置匹配的开始:help /\ze
“设置匹配结束:help /\w
“字符<强>调试:强>
命令:verbose :syn
应该给你这样的东西:
--- Syntax items ---
[...]
sql xxx match /"\zssql_\w*\ze"/
:verbose :hi
:
Last set from ~/.vimrc
[...]
sql xxx cterm=bold ctermfg=7 ctermbg=1 guifg=white guibg=red
xxx
应与您指定的颜色相同(并且看起来像我的屏幕截图中的突出显示)。如果您没有看到这些内容,请检查您的.vimrc
(或Windows上的_vimrc
)是否来源:
:scriptnames
1: /home/javh/.vimrc
[...]
当然这只适用于:
:echo has('syntax')
...返回1
(或:version
包括+syntax
)。
答案 1 :(得分:2)
syn match
的语法是syn match highlight_group reg_exp
。
所以,试试:
au BufRead,BufNewFile *.log syn match Todo /"sql_\w\+"/
为什么不阅读:syn
的帮助? Vim帮助非常好,你可以快速找到所有答案:)
:help :syntax
答案 2 :(得分:0)
答案 3 :(得分:0)
另一种不使用syntax match
的方法是直接使用:match
命令或matchadd()
命令。
简而言之:
" to enable
:match Todo /"\@<=sql_\w\+"\@=/
" reference:
" \@<= is such a beautiful duck, :help /\@<= for more help
" :help /\@= for the \@= part, also.
"
" to cancel
:match none
" :help :match / :help :2match / :help :3match
或
" to enable
:call matchadd('Todo', '"\zssql_\w\+\ze"')
" or
:let foobarbaz = matchadd('Todo', '"\zssql_\w\+\ze"')
"
" to disable
:call matchdelete(foobarbaz)
" or
:call clearmatches()