Vimでは、FIXMEとTODOが強調表示されていますが、FIXME:とTODO:(キーワードの後にコロンがあることに注意してください)を強調表示できませんか?これを実現するには、.vimrcに何を入れればよいですか?
さて、あなたはすでに問題を見つけましたが、ここに理由があります。
構文マッチングには、キーワード、マッチ、リージョンの3つの基本タイプがあります。キーワードは固定文字列であり、通常は基本言語のキーワード(int
、double
、...)に使用されます。また、場合によっては、FIXMEおよびTODOにも使用されます。私は本当に固定文字列を意味します。正規表現を使用する一致や地域とは異なり、正確で完全な単語でなければなりません。たとえば、C構文から:
syn keyword cTodo contained TODO FIXME XXX
ほぼすべての組み込み構文定義で、グループ名が異なる(cTodo)ように見えます。
iskeyword
は、指定された文字をキーワードの一部にできるかどうかをvimに伝えます。デフォルトでは、コロンは含まれていないため、キーワードを検索すると、vimは「FIXME:」を「FIXME」として認識し、コロンを無視します。コロン(set iskeyword+=:
)、追加の強調表示を定義できます:
syn keyword myTodo contained TODO: FIXME:
既存の構文/ハイライトグループにどのように組み込むかは、あなた次第です。ファイルタイプが1つだけの場合は、その構文のtodoグループに追加できます(cTodoなど)。どこでも必要な場合は、私が提案したように「myTodo」を実行してから、Todoハイライトグループ(hi def link myTodo Todo
)。
または、iskeyword
をそのままにして(おそらくこれをお勧めします)、単純に一致を使用できます。
syn match myTodo contained "\<\(TODO\|FIXME\):"
hi def link myTodo Todo
augroup vimrc_todo
au!
au Syntax * syn match MyTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE|XXX):/
\ containedin=.*Comment,vimCommentTitle
augroup END
hi def link MyTodo Todo
containedin
は、「Comment」で終わるすべてのグループに加えて、vimCommentTitleを追加します。ここで、" TODO: foo
それ以外の場合、MyTodoとして強調表示されません。
独自の環境を作成する場合、make syntax file (not .vimrc)
グローバル構文ファイルはvimディレクトリにあります(例:/usr/share/vim/vim72/syntax/c.vim)
〜/ .vim/syntax/c.vimを作成すると、独自の構文を追加できます。 (オーバーライド)
そのファイルに構文を追加するだけです。 (@Jefromiが行う方法)