6

引用符で始まり、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
4

4 に答える 4

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(または_vimrcWindows で) ソースが提供されていることを確認してください。

:scriptnames
1: /home/javh/.vimrc
[...]

もちろん、これは次の場合にのみ機能します。

:echo has('syntax')

... を返します1(または を:version含みます+syntax)。

于 2010-11-12T17:49:15.120 に答える
2

の構文syn matchsyn match highlight_group reg_exp.

だから、試してみてください:

au BufRead,BufNewFile *.log syn match Todo /"sql_\w\+"/

のヘルプを読んでみません:synか? Vim ヘルプは非常に優れているため、すべての回答をすばやく見つけることができます :)

:help :syntax
于 2010-11-12T17:46:27.083 に答える
0

このスレッドを見ましたか?VIM: シンタックス ハイライト ファイルを作成する簡単な手順 - ログファイル用

于 2010-11-12T17:41:29.380 に答える
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()
于 2010-11-12T20:36:33.093 に答える