Edited at

vimで構文のハイライトを自作する

More than 1 year has passed since last update.


1. 構文の定義ファイル

vimでは「拡張子名.vim」というファイル内に各拡張子に対する構文が定義されます。

例えば、C言語(example.c)の構文の定義はc.vim、

HTML(example.html)であればhtml.vimというファイル内に記述されます。

これらの構文の定義ファイルは~/vim74/syntaxのフォルダ内に置かれています。

未定義の拡張子に対する構文定義を追加することもできます。

今回は例として.txtの構文定義を作成します。

txt.vimはデフォルトで存在しないので、

txt.vimを新たに作成して~/vim74/syntaxのフォルダ内に保存します。

ハイライトしたい構文を書き並べましょう。


~/vim74/syntax/txt.vim

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です。


vimrc

au BufRead,BufNewFile *.txt set filetype=txt


他の拡張子の場合には「txt」の部分を変更してください。


3. test.txtで試す

test.txtの編集画面は次のように表示されます。

keywordで定義した「コメント」と「定数」は一行目ではハイライトされませんね。

どうやらkeywordで定義すると他の文字列と連続する形で構文が含まれる場合にはハイライトされないようです。

空白や記号と連続する場合はハイライトされています。