Vimではシンタックスハイライトの定義を自作することができます。シンタックスハイライトの定義を自作することで、サポート外のプログラミング言語やテキストファイルなどでもハイライトを表示することができます。
この記事では、Vimエディタのシンタックスハイライトの設定を自作して使えるようにする方法をご紹介していきます。
この記事の内容
シンタックスハイライトの設定を自作して追加する方法
サンプルとして、以下のTodoリストのテキストファイルにハイライトを付けていきます。
シンタックスハイライトの定義を自作するには、次の手順で進めます。
手順1: シンタックスの名称を決める
「c」や「php」など、Vimエディタのシンタックスにはそれぞれ名称が付いています。
新しく自作するシンタックスにも名前を付ける必要があります。
例として、シンタックス名を「todotxt」で作成します。
手順2: シンタックス定義ファイルを作成する
$VIMRUNTIMEのフォルダの配下にある「syntax」ディレクトリに、自作するシンタックスの定義ファイルを作成します。
$ cd $VIMRUNTIMEのパス
$ vim シンタックスの名称.vim
- $VIMRUNTIMEは、Vimのランタイムがインストールされているディレクトリの環境変数です。Vim上で「:echo $VIMRUNTIME」を入力するとパスが確認できます。
手順3: シンタックスの定義を設定する
作成した定義ファイル(シンタックスの名称.vim)に、シンタックスの定義を設定していきます。
例では、以下のようにシンタックスを定義しました。
"シンタックス定義
syntax keyword todoPriority 優先
syntax match todoTitle /++\S*/
syntax region todoComment start=+"+ end=+"+
シンタックスの定義は、次の形式で設定できます。
syntax 構文要素(keyword, match, regionなど) 構文グループ
使用できる基本的な構文要素は次のとおりです。
- keyword : 「syntax keyword 構文グループ キーワード」
- 記述したキーワードを認識します。例では「優先」という単語に対してハイライトします。
- match : 「syntax match 構文グループ キーワード」
- キーワードだけでなく、正規表現が利用できます。例では「++」が先頭に付く文字列をハイライトします。
- region : 「syntax reigion 構文グループ start=開始文字 end=終了文字」
- start, endで開始・終了の記号や文字列を定義し、その範囲内に対してハイライトします。
より詳しい定義ファイルの書き方については、Vimエディタの公式ドキュメントの説明を参照して下さい。
手順4: ハイライトを設定する
続いて、定義した構文グループにハイライトの設定を行います。ハイライトは、次のように設定します。
highlight link 構文グループ ハイライト名
ハイライト名は、Vimで定義されているハイライト名と揃えることで、設定されているカラーを使うことができます。
Vimで定義されているハイライト名は、Vim上で「:highlight」を入力すると確認できます。
例では、以下のようにハイライトの定義を記述しました。
"シンタックス定義
syntax keyword todoPriority 優先
syntax match todoTitle /++\S*/
syntax region todoComment start=+"+ end=+"+
"ハイライト定義
highlight link todoPriority Todo
highlight link todoTitle Define
highlight link todoComment Comment
let b:current_syntax = "todotxt"
最後の行でシンタックスの名称を設定します。以上でシンタックス定義ファイルの作成は完了です。
手順5: シンタックス定義ファイルを読み込む
作成した定義ファイルをVimエディタ起動時に読み込むために、vimrcを編集します。
以下のようにvimrcにシンタックスの定義ファイルを適用するファイル形式を設定します。filetypeには定義したシンタックスの名称を記述します。
an BufRead,BufNewFile *.txt set filetype=シンタックスの名称
vimrcを保存できたら、自作したシンタックスハイライトの設定は完了です。
元のファイルを開いてみると、定義したハイライトが反映されたことを確認できます。
以上、Vimエディタのシンタックスハイライトの設定を自作して追加する手順でした。
コメント