1. 構文の定義ファイル
vimでは「拡張子名.vim」というファイル内に各拡張子に対する構文が定義されます。
例えば、C言語(example.c)の構文の定義はc.vim、
HTML(example.html)であればhtml.vimというファイル内に記述されます。
これらの構文の定義ファイルは~/vim74/syntaxのフォルダ内に置かれています。
未定義の拡張子に対する構文定義を追加することもできます。
今回は例として.txtの構文定義を作成します。
txt.vimはデフォルトで存在しないので、
txt.vimを新たに作成して~/vim74/syntaxのフォルダ内に保存します。
ハイライトしたい構文を書き並べましょう。
syntax keyword txtComment コメント
syntax keyword txtConstant 定数
syntax match txtString /文字列/
syntax match txtIdentifier /何これ/
syntax match txtError /エラー/
highlight link txtComment Comment
highlight link txtConstant Constant
highlight link txtString String
highlight link txtIdentifier Identifier
highlight link txtError Error
let b:current_syntax = "txt"
書き方は構文を指定するときに
syntax keyword [グループ名] [構文]
や
syntax match [グループ名] [構文]
といった具合に記述します。
このときグループ名と構文は自由に決められます。
keywordとmatchの違いは正確なところは分かりませんが結果を後に示します。
keywordやmatchの他にもハイライト箇所を範囲で指定するregionがあるようです。
ハイライトする色を選択するときには
highlight link [グループ名] [ハイライトカラー]
とします。
ここでグループ名は自分で決めたものから選びます。
ハイライトカラーは多数用意されている中から選びます。
:h syntax
というコマンドで一覧を見ることができます。
2. vimrcに追加する内容
vimrcには次の一文を追加するだけでokです。
au BufRead,BufNewFile *.txt set filetype=txt
他の拡張子の場合には「txt」の部分を変更してください。
3. test.txtで試す
keywordで定義した「コメント」と「定数」は一行目ではハイライトされませんね。
どうやらkeywordで定義すると他の文字列と連続する形で構文が含まれる場合にはハイライトされないようです。
空白や記号と連続する場合はハイライトされています。