Up: 目次   [Index]


構文强調

*syntax.txt*	For Vim バージョン 8.1.  Last change: 2019 Nov 14


		  VIMリファレンスマニュアル    by Bram Moolenaar

構文ハイライト

Vim は構文ハイライトによつてテキストの一部を別のフォントや色で表示することができる。ハイライトされるテキストは、特定のキーワードや正規表現パターンにマッチするテキストである。動作を速く保つため、ファイル全體を構文解析するわけではないから、このハイライト方法には限界が存在する。單語(レキシカル)ハイライトと呼ぶのがより正しいが、皆が構文ハイライトと呼ぶのでさう呼び續けてゐる。

Vim は全ての端末で構文ハイライトをサポートしてゐる。しかし、多くの普通の端末にはごく限られたハイライト手段しか提供されてゐないので、GUI 版の gvim で動作させたときに見榮えが最もよくなる。

ユーザーマニュアルにおける記述:

|usr_06.txt| 構文ハイライトの紹介。
|usr_44.txt| 構文ファイルの記述方法の紹介。
1. クイックスタート|:syn-qstart|
2. 構文ファイル|:syn-files|
3. 構文ファイル讀込の手順|syntax-loading|
4. HTMLへの變換|2html.vim|
5. 構文ファイルの覺書|:syn-file-remarks|
6. 構文を定義する|:syn-define|
7. :syntax の引數|:syn-arguments|
8. syntax のパターン|:syn-pattern|
9. クラスタ|:syn-cluster|
10. 構文ファイルのインクルード|:syn-include|
11. 表示のシンクロナイズ|:syn-sync|
12. 構文アイテムのリストを表示する|:syntax|
13. ハイライトコマンド|:highlight|
14. グループのリンク|:highlight-link|
15. 構文の消去|:syn-clear|
16. 函數名などのハイライト|tag-highlight|
17. ウィンドウローカル構文|:ownsyntax|
18. カラー對應 xterm|xterm-color|
19. シンタックスが遲い時には|:syntime|

{Vi にはこれらのコマンドはない}

コンパイル時に |+syntax| 機能を無效にした場合には構文ハイライトは利用することはできない。

1. クイックスタート

次のコマンドで構文ハイライトが有效になる:

:syntax enable

このコマンドにより實際には次のコマンドが實行される

:source $VIMRUNTIME/syntax/syntax.vim

環境變數 VIM が設定されてゐない場合は、Vim は別の方法 (|$VIMRUNTIME| 參照) でパスの檢索を試みる。通常はこれでうまくいく。うまく動作しない場合は、環境變數 VIM に Vim の構成ファイルが置いてあるディレクトリの設定を試みる。例へば、構文ファイルがディレクトリ "/usr/vim/vim81/syntax" にあるならば、$VIMRUNTIME に "/usr/vim/vim81" を設定する。これは Vim を起動する前に、シェルで設定しておかなければならない。

このコマンドは、GUI が實行されてゐる、もしくは閒もなく立ち上がる場合、スクリプト |menu.vim| の讀み込みも行ふ。これを避けるには |'go-M'| を參照。

コマンド ‘:syntax enable‘ は現在の色設定を變更しない。そのため、このコマンドを使用する前後にコマンド ‘:highlight‘ で好みの色を設定することができる。現在の設定を破毀して、デフォルトの色を設定させたい場合は次のコマンドを使用する:

:syntax on

GUI を使用してゐる場合は、次のコマンドで黑地に白文字を設定できる:

:highlight Normal guibg=Black guifg=White

カラー端末については |:hi-normal-cterm| を參照。

自分自身で色を設定する方法については |syncolor| を參照。

Note:
MS-DOS と Windows の構文ファイルは改行コードが <CR><NL> である。UNIX では <NL> である。自分のシステムに合つた改行コードのファイルを使はなければならない。しかし、MS-DOS と Windows ではオプション ’fileformats’ が空でなければ正しい形式が自動的に選擇される。

Note:
反轉表示 ("gvim -fg white -bg black") を使用する場合、|gvimrc| が讀込まれた後、GUI ウィンドウが開かれるまでは ’background’ のデフォルト値が設定されない。そのせゐで誤つたデフォルトのハイライトが使用されてしまふ。ハイライト表示を有效化する前に ’background’ のデフォルト値を設定するには、|gvimrc| にコマンド ":gui" を含めればよい:

:guiウィンドウを開き、’background’ にデフォルト値を設定する
:syntax onハイライトを有效化し、’background’ にもとづいて色を設定する

Note:
|.gvimrc| の中で ":gui" を使用すると "gvim -f" によりフォアグラウンドで開始することができなくなる。その際は ":gui -f" を使用すること。

次のコマンドで構文ハイライトの有效・無效を切換へることができる:

:if exists("g:syntax_on") | syntax off | else | syntax enable | endif

これをキーマップに設定するには、以下のやうに書く:

:map <F7> :if exists("g:syntax_on") <Bar>
     \   syntax off <Bar>
     \ else <Bar>
     \   syntax enable <Bar>
     \ endif <CR>

[|<>| 記法を用ゐて全ての文字をそのまま入力すること]

詳細

コマンド ":syntax" はファイルを source することで實裝されてゐる。その際に source されるファイルの中身を見れば、このコマンドがどのやうに動作してゐるのか正確に知ることができる。

コマンドファイル
:syntax enable$VIMRUNTIME/syntax/syntax.vim
:syntax on$VIMRUNTIME/syntax/syntax.vim
:syntax manual$VIMRUNTIME/syntax/manual.vim
:syntax off$VIMRUNTIME/syntax/nosyntax.vim

|syntax-loading| も參照。

Note:
長い行があつて表示が遲く、構文ハイライトをオフにしたくなるやうな場合は、’synmaxcol’ をもつと小さい値にすることも考へてみること。

2. 構文ハイライトファイル

ある 1 つの言語用の構文とハイライト色定義コマンドは通常 1 つのファイル (以下構文ファイル) に格納される。名前は "{name}.vim" と付ける慣習になつてゐる。{name} はその言語の名前か短縮名となる (DOS ファイルシステムで要求される、8.3 文字の形式にあはせることが望ましい)。 例:

c.vim, perl.vim, java.vim, html.vim, cpp.vim, sh.vim, csh.vim

構文ファイルには、vimrc ファイルと同樣に Ex コマンドを記述できる。しかし 1 つのファイルには、1 つの言語のためのコマンドだけを記述するやう取り決めてゐる。ある言語が別の言語のスーパーセットである時には、他のファイルを內包してゐても良く、例へば、ファイル cpp.vim はファイル c.vim を取り込むやうになつてゐる:

:so $VIMRUNTIME/syntax/c.vim

通常これらの構文ファイルは自動コマンドにより讀込まれる。例:

:au Syntax c     runtime! syntax/c.vim
:au Syntax cpp   runtime! syntax/cpp.vim

このやうなコマンドはファイル $VIMRUNTIME/syntax/synload.vim に書かれてゐる。

獨自構文ファイルの作成

獨自の構文ファイルを作成し、":syntax enable" をしたとき自動的にそのファイルが使はれるやうにするには、以下のやうにする:

  1. ユーザーランタイムディレクトリを作成する。通常はオプション ’runtimepath’ に示される最初のディレクトリを使用する。UNIX の例では:
    mkdir ~/.vim
    
  2. "syntax" といふ名のディレクトリを作成する。UNIX では:
    mkdir ~/.vim/syntax
    
  3. Vim の構文ファイルを作成する。もしくはインターネットからダウンロードする。そのファイルはディレクトリ syntax に置く。構文 "mine" の例では:
    :w ~/.vim/syntax/mine.vim
    

これで獨自構文ファイルを手動で使ふことはできるやうになつてゐる:

:set syntax=mine

このコマンドを實行するためにVimを再起動する必要はない。

このファイルタイプが認識されるやうにするには、|new-filetype| を參照。

システム管理者としてユーザー全てに獨自構文ファイルを使はせるには、各ユーザーに同じ構文ファイルをインストールさせる必要はなく、全ユーザー共通の ’runtimepath’ ディレクトリにインストールすればよい。

既存の構文ファイルに設定を追加する

既存の構文ファイルでほぼ滿足だが、いくつかの設定を追加したりハイライト手法を變更したい場合には、以下の手順に從ふ:

  1. 上同樣、’runtimepath’ に示されるユーザーディレクトリを作成する。
  2. "after/syntax" といふディレクトリを作成する。UNIX の例:
    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  3. 追加設定を行ふコマンドを含む Vim script ファイルを作成する。例として、C 言語のコメントの色を變更するには:
    highlight cComment ctermfg=Green guifg=Green
    
  4. その設定ファイルをディレクトリ "after/syntax" に置く。名前には構文名に ".vim" を追加して使用する。C の構文を擴張するならば:
    :w ~/.vim/after/syntax/c.vim
    

以上。次囘Cのファイルを編輯する時にはコメントが異なつた色で表示される。Vim を再起動する必要はない。

構文ファイルが複數になるときは、ファイルタイプの名前のディレクトリに置くとよい。そのディレクトリの中の全ての "*.vim" ファイルが讀み込まれるやうになる。例:

~/.vim/after/syntax/c/one.vim
~/.vim/after/syntax/c/two.vim

既存の構文ファイルを置き換へる

標準の構文ファイルが氣に入らない場合や、新しいバージョンをダウンロードした際には、上で述べた |mysyntaxfile| に從へば良い。ただ ’runtimepath’ で、前の方に記されたディレクトリに構文ファイルを置くやうに氣をつければ良い。Vim は適合する構文ファイルのうち最初に見つけた 1 つだけを讀込む (それが b:current_syntax を設定すると想定してゐる)。

名前付けの慣習

構文グループとは、同じ種類の構文アイテムをグループ化したものである。構文グループから强調グループにリンクされ、强調グループに對して色が設定される。構文グループそれ自體は、色や屬性を指定するものではない。

ハイライトや構文グループの名前は ASCII 文字、數字、アンダースコアだけでつけなければならない。正規表現では: "[a-zA-Z0-9_]*" しかしそれ以外の文字を使つても Vim はエラーを出力しない。

各ユーザーが好みの色セットを使用できるやうに、多くの言語に共通するハイライトグループには優先名が與へられてゐる。推奬されてゐるグループ名は以下のとほり (構文ハイライトがちやんと機能してゐれば、"Ignore" 以外はそのグループに設定された色で表示されるだらう):

*Commentコメント
 
*Constant定數
String文字列定數: "これは文字列です"
Character文字定數: ’c’, ’\n’
Number數値定數: 234, 0xff
Booleanブール値の定數: TRUE, false
Float浮動小數點數の定數: 2.3e10
 
*Identifier變數名
Function函數名(クラスメソッドを含む)
 
*Statement命令文
Conditionalif, then, else, endif, switch, その他
Repeatfor, do, while, その他
Labelcase, default, その他
Operator"sizeof", "+", "*", その他
Keywordその他のキーワード
Exceptiontry, catch, throw
 
*PreProc一般的なプリプロセッサー命令
Include#include プリプロセッサー
Define#define プリプロセッサー
MacroDefineと同値
PreConditプリプロセッサーの #if, #else, #endif, その他
 
*Typeint, long, char, その他
StorageClassstatic, register, volatile, その他
Structurestruct, union, enum, その他
Typedeftypedef 宣言
 
*Special特殊なシンボル
SpecialChar特殊な文字定數
Tagこの上で CTRL-] を使ふことができる
Delimiter注意が必要な文字
SpecialCommentコメント內の特記事項
Debugデバッグ命令
 
*Underlined目立つ文章, HTMLリンク
 
*Ignore(見た目上) 空白, 不可視 |hl-Ignore|
 
*Errorエラーなど、なんらかの誤つた構造
 
*Todo特別な注意が必要なもの; 大抵は TODO FIXME XXX などのキーワード

マーク (*) されてゐる名前が優先グループ、その他はマイナーグループである。優先グループには、"syntax.vim" によりデフォルトのハイライト手法が定義されてゐる。マイナーグループは優先グループにリンクされ、リンクした先と同じハイライト手法になる。ファイル "syntax.vim" が讀込まれた後でコマンド ":highlight" を使へば、そのデフォルトを上書することができる。

Note:
ハイライトグループ名には大文字小文字の區別がないことに注意。"String" と "string" はどちらも同じグループを意味する。

以下の名前は豫約されてゐるのでグループ名として使用することはできない: NONE, ALL, ALLBUT, contains, contained

Ignore グループを使ふときは、conceal 機能も使ふと便利かもしれない。|conceal| 參照。

3. 構文ファイル讀込の手順

ここではコマンド ":syntax enable" を實行した時に何が起こるかの詳細を說明する。Vim は初期化の時に、ランタイムファイルの在り處を自動的に發見する。ここでは變數 |$VIMRUNTIME| にその場所が格納されてゐるとする。

":syntax enable" と ":syntax on" では以下のことが起こる:

ファイルを讀込む時には、Vim は以下のやうに關聯した構文ファイルを見つける:

4. HTML への變換

2html は構文ファイルではなくて、現在のウィンドウの內容を HTML に變換するスクリプトである。Vim は新しいウィンドウを作成しそこに HTML ファイルを構築する。

變換結果を保存すればブラウザーでそれを表示できる。Vim での表示と同じ色で表示されるはずである。|g:html_line_ids| を有效化すると、ブラウザーのアドレスバーで URL の末尾に (例へば) #L123 や #123 と付け加へることで、その行にジャンプできる。また、|g:html_dynamic_folds| を有效化すると、Vim の折り疊みを表示したり隱したりできる。

使ふ際にはオプション ’filetype’ や ’syntax’ に "2html" を設定してはならない!現在のファイルをコンバートするためにはこのスクリプトを讀込む:

:runtime! syntax/2html.vim

2html.vim に影響する變數はたくさんある。下記參照。下記の on/off オプションは指定された値を明示的に設定することで有效化/無效化できる。また、|:unlet| で變數を削除することで初期設定に戾すことができる。

覺書き:

例へば次の Unix シェルスクリプトですべての .c と .h ファイルを變換できる:

for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done

變換の範圍を指定するには、|:TOhtml| コマンドに範圍を指定するか、"g:html_start_line" と "g:html_end_line" に變換したい範圍の最初と最後の行を設定する。例へば、最後に選擇された範圍だけを變換するには:

:let g:html_start_line = line("'<")
:let g:html_end_line = line("'>")
:runtime! syntax/2html.vim
:[range]TOhtml

":TOhtml" コマンドは標準プラグインで定義されてゐる。このコマンドは |2html.vim| を實行する。範圍が指定された場合は |g:html_start_line| と |g:html_end_line| をその範圍に設定する。範圍省略時はファイル全體が對象となる。

もしカレントウィンドウが |diff| の一部で、|g:html_diff_one_file| が設定されてゐない場合、:TOhtml はカレントタブ內の diff を表示してゐるすべてのウィンドウを變換して <table> 要素で竝べた HTML を生成する。|g:html_line_ids| が有效なら、(例へば) #W1L42 で 1 番目のウィンドウの 42 行目、#W3L87 で 3 番目の 87 行目にジャンプできる。

例:

:10,40TOhtml " convert lines 10-40 to html
:'<,'>TOhtml " convert current/last visual selection
:TOhtml      " convert entire buffer
g:html_diff_one_file

初期設定: 0

0 なら、|:TOhtml| を使ふとカレントタブ內の |diff| を表示してゐるすべてのウィンドウが變換され、<table> 要素で竝べられた HTML が生成される。1 なら、カレントバッファのみが變換される。

例:

let g:html_diff_one_file = 1
g:html_whole_filler

初期設定: 0

0 なら、もし |g:html_diff_one_file| が 1 なら、3 行以上の連續した詰め行は 3 行で表示され、眞ん中の行に插入された行數の合計が表示される。1 なら |g:html_diff_one_file| が設定されてゐないときのやうに、常に插入された行が表示される。

:let g:html_whole_filler = 1
g:html_no_progress

初期設定: 0

0 なら、2html.vim の變換過程の各段階で進行狀況のプログレスバーをステータスラインに表示する。1 なら、プログレスバーを表示しない。若干スピードは速くなるが、變換がいつごろ終はるかを知ることはできない。大きなファイルならとても時閒がかかるのに!

例:

let g:html_no_progress = 1

Vim を非對話で實行すれば、スクリプトでバッファやウィンドウなどを走査するごとに表示を更新しなくてもよくなるので、速度はもつと速くなる:

vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c

Note:
-s フラグは .vimrc とプラグインの讀み込みを抑制する。したがつて、HTML 變換に必要な設定などは明示的に讀み込まなければならない。詳細は |-E| と |-s-ex| を參照。このやうに各コマンドを指定して實行するよりは、上記の -c で設定してゐるやうなことがらをすべてスクリプトファイルに書き込み、-u フラグで讀み込んで實行するといいだらう。

表示されたとき、プログレスバーは色付けされたボックスを、HTML 變換の進捗としてステータス行に沿つて表示するでせう。デフォルトでは、現在の "DiffDelete" ハイライトグループとして背景色が使はれます。もしも "DiffDelete" と "StatusLine" がいくつかの背景色を持つてゐるなら、TOhtml は自動的に色の違ひを調節するでせう。この自動的に選擇された色が氣に入らないなら、プログレスバーのために自身でハイライト色を定義することができます。例:

hi TOhtmlProgress guifg=#c0ffee ctermbg=7
g:html_number_lines

初期設定: 現在の ’number’ の設定

0 なら、バッファのテキストは行番號なしで HTML に表示される。1 なら、生成される HTML に行番號が付加される。色は Vim の行番號表示と同じ (|hl-LineNr|)。

number’ がオフでも强制的に行番號を表示するなら:

:let g:html_number_lines = 1

强制的に行番號を表示しないやうにするなら:

:let g:html_number_lines = 0

number’ の設定に從ふやうに戾すには:

:unlet g:html_number_lines
g:html_line_ids

初期設定: 1。|g:html_number_lines| が設定されてゐないときは 0。

この設定が 1 なら、各行番號に HTML の id 屬性を付ける。行番號が表示されてゐないときは空の <span> 要素を插入して id を付ける。この ID 屬性は、HTML が單一のバッファから生成されたときは L123 のやうな形になる。diff 表示から生成されたときは W2L123 のやうな形になる。これを使つて (特定の diff ウィンドウの) 特定の行にジャンプできる。指定された行にジャンプする前にその行の折り疊みを開くための JavaScript が插入される (|g:html_dynamic_folds|)。JavaScript はウィンドウ ID や行番號前の L を省略できる機能も提供する。

例:

page.html#L123	單一バッファファイルの 123 行目にジャンプ
page.html#123	同上

diff.html#W1L42	diff の 1 番目のウィンドウの 42 行目にジャンプ
diff.html#42	同上
g:html_use_css

初期設定: 1

1 なら、CSS で裝飾された HTML 5 準據の HTML が生成される。最新のブラウザーと多くの古いブラウザーでサポートされてゐる。0 なら、<font> タグで裝飾された時代遲れの HTML が生成される。これは推奬されてゐないが、古いブラウザー、あるいはメーラーや揭示板の投稿など、CSS が使へない場合には必要だらう。

例:

:let g:html_use_css = 0
g:html_ignore_conceal

初期設定: 0

0 なら、Conceal されたテキストは HTML には表示されず、’conceallevel’ の現在の設定に應じて |:syn-cchar| や ’listchars’ の文字が代はりに表示される。1 なら、Conceal されてゐてもされてゐなくても、すべてのテキストが HTML に表示される。

次のコマンドでバッファ內のすべてのテキストを HTML に表示することができる (折り疊まれて |conceal| なければ):

:let g:html_ignore_conceal = 1
:setl conceallevel=0
g:html_ignore_folding

初期設定: 0

0 なら、折り疊みで閉ぢられたテキストは Vim で折り疊み表示されてゐるテキストに置き換へられる (|fold-foldtext|)。Vim で折り疊みを開けるのと同じやうに、HTML でも開けるやうにしたい場合は |g:html_dynamic_folds| を參照。1 なら、バッファのすべてのテキストを HTML に含める。テキストが折り疊まれてゐるかどうかは無視される。|g:html_dynamic_folds| は機能しない。

次のコマンドでバッファ內のすべてのテキストを HTML に表示することができる (Conceal されてなければ):

zR
:let g:html_ignore_folding = 1
g:html_dynamic_folds

初期設定: 0

0 なら、折り疊まれたテキストは HTML に含まれない。1 なら、Vim の動作と同じやうに折り疊みを開いたり閉ぢたりするための、JavaScript が生成される。

この變數を 1 に設定すると、|g:html_use_css| の設定にかかはらず、2html.vim は常に CSS を使ふやうになる。

この變數は |g:html_ignore_folding| が設定されてゐるときは無視される。

:let g:html_dynamic_folds = 1
g:html_no_foldcolumn

初期設定: 0

0 なら、もし |g:html_dynamic_folds| が 1 なら、Vim の foldcolumn (|fold-foldcolumn|) に似たテキストを生成する。ユーザーはそれをクリックすることで折り疊みを開いたり閉ぢたりできる。生成されるテキスト幅の最小値は現在の ’foldcolumn’ の設定で決まる。

1 なら、その列を生成しない。代はりに、マウスを折り疊みの上にもつていくことで折り疊みが開くやうになる (|g:html_hover_unfold| が設定されたときのやうに)。

:let g:html_no_foldcolumn = 1
g:html_prevent_copy

初期設定: 空文字列

このオプションは、例へば生成された HTML をブラウザーで開いて全體を選擇してコピーしたときに、特定の範圍がコピーされないやうにできる。これは foldcolumn や行番號が表示されてゐても、ソーステキストのみコピーできるやうにしたい場合に便利である。範圍の指定は次のやうにする:

f:foldcolumn
n:行番號 (折り疊みテキスト內のも)
t:折り疊みテキスト
d:差分詰め文字

例へば、foldcolumn と行番號をコピーできないやうにするには:

:let g:html_prevent_copy = "fn"

生成されたページでコピーするのを防ぐために使はれるメソッドは |g:html_use_input_for_pc| の値に依存します。

g:html_use_input_for_pc

初期設定: "fallback"

もしも |g:html_prevent_copy| が空でなければ:

"all" なら、コピー不可領域のための標準テキストの位置で讀み込み專用の <input> 要素が使はれます。いくつかのブラウザー、特に古いブラウザーでは、ページ全體を選擇しコピーをした後に <input> タグはページのテキストでペーストされません。もしも |g:html_no_invalid| が 0 なら、<input> タグは無效なタイプになります; これは多くのブラウザーで動作しますが、ページは無效になるでせう。

Note:
このメソッドは最新バージョンの Chrome 系ブラウザーでは動作しないことに注意してください; <input> タグはテキストとしてペーストされます。

"fallback" (既定値) なら、古いブラウザー向けに同じ <input> 要素が生成されますが、新しいブラウザー (CSS の機能で檢出) は <input> 要素を隱し、代はりに コピー不可のテキストを表示するために ::before 疑似要素內で生成されたコンテンツを使ひます。このメソッドは新舊のどちらでも、バージョンの大きいブラウザーで動作するでせう。

"none" なら、<input> 要素はまつたく生成されません。生成されたコンテンツメソッドが使はれるだけです。これは古いブラウザー、特に Internet Explorer はコピー可能になることを意圖してゐないテキストをコピーしたり、コピー不可のテキストがまつたく見えないかもしれないことを意味します。しかしながら、これはもつとも標準に基づくメソッドであり、マークアップをより減らすでせう。

g:html_no_invalid

初期設定: 0

0 なら、もし |g:html_prevent_copy| が空でなく、かつ |g:html_use_input_for_pc| が "none" でなければ、コピー抑制エリアのための <input> エレメントに不正な屬性が意圖的に插入されます。これはいくつかのアプリケーションで <input> 要素をペーストするのを防ぎます。特に、いくつかのバージョンの Microsoft Word は不正な屬性を持つ <input> 要素をペーストしません。

1 なら、不正な屬性は插入されません。正しいページが生成されます。しかしながら、<input> 要素はいくつかのアプリケーションでペーストされ、あとで削除するのが困難になるかもしれません。

g:html_hover_unfold

初期設定: 0

0 なら、2html.vim で |g:html_dynamic_folds| 付きで生成された HTML の折り疊みを開く方法は、生成された折り疊み列をクリックする方法だけになる。

1 なら、CSS 2.0 を使つて、マウスを折り疊みの上にもつていくことで折り疊みを開けるやうにする。JavaScript を無效にしてゐても折り疊みを開けるやうにしたい場合に便利である。

Note:
古いブラウザー (特に Internet Explorer 6) はこの機能をサポートしてゐない。通常の CSS1 を使つた IE6 用のマークアップが插入され、IE6 でも表示できるやうにはなつてゐるが、foldcolumn がないとそれを開くことはできない。

:let g:html_hover_unfold = 1
g:html_id_expr

初期設定: ""

動的折り疊みや行 ID によるジャンプが機能するにはドキュメント內における一意の ID が必要である。例へば生成された HTML を他のドキュメント內にコピーしたりすると、その ID は一意性が保證されなくなる。g:html_id_expr に式が設定されてゐると、Vim は一意な文字列を得るためにその式を評價して、ドキュメント內で使用されるID に付加する。その完全な ID であれば、他のドキュメントにコピーされた場合でも一意に定めることができる。例へば、_ とバッファ番號を ID に付加するには:

:let g:html_id_expr = '"_".bufnr("%")'

ID の末尾に "_mystring" を付加するには:

:let g:html_id_expr = '"_mystring"'

Note:
diff ビューを HTML に變換するときは、この式は diff の 1 番目のウィンドウに對してのみ評價される。そしてその結果は他のすべてのウィンドウに對して使用される。

g:html_pre_wrap

初期設定: 現在の ’wrap’ の設定

0 なら、もし |g:html_no_pre| が 0 または未設定なら、生成された HTML のテキストはブラウザーの端で折り返されない。

1 なら、もし |g:html_use_css| が 1 なら、CSS 2.0 の "white-space:pre-wrap" が使はれ、テキストはブラウザーの端で折り返される。

明示的に折り返しを有效にするには:

:let g:html_pre_wrap = 1

明示的に折り返しを無效にするには:

:let g:html_pre_wrap = 0

初期設定に戾し、’wrap’ の設定が反映されるやうにするには:

:unlet g:html_pre_wrap
g:html_no_pre

初期設定: 0

0 なら、テキストは <pre>...</pre> タグで圍まれる。スペース文字の連續はそのまま Vim 內での表示と同じやうに表示され、タブ文字もそのまま含むことができる (|g:html_expand_tabs| 參照)。

1 なら (非推奬)、<pre> タグは使はれず、代はりに <div> タグが使はれる。スペース文字は &nbsp; 文字參照に變換され、改行には <br> が使はれる。これは HTML で折り返し (|g:html_pre_wrap|) をするためのもう 1 つの方法で、古いブラウザーでも動作するが、Vim の表示とは違ふページが生成されるかもしれない。

:let g:html_no_pre = 1
g:html_expand_tabs

初期設定: ’tabstop’ が 8 で、’expandtab’ が 0 で、’vartabstop’ が使はれてをらず、かつ foldcolumn がない、もしくは行番號が生成された HTML にない場合は 0。

さうでない場合は 1。

1 なら、<Tab> 文字は同等のスペース文字、または &nbsp; (|g:html_no_pre| が 1 の場合) に置換される。

0 なら、もし |g:html_no_pre| が 0 または未設定なら、<Tab> 文字はそのまま HTML に出力される。これはブラウザーで表示したときに、もとのテキストのままコピー & ペーストできるやうにしたい場合に便利である。

Note:
これはテキストの整列やインデントが崩れやすい (初期設定として設定された場合は別)。

强制的に |2html.vim| で <Tab> 文字を維持したい場合は:

:let g:html_expand_tabs = 0

强制的にタブ文字を展開したい場合は:

:let g:html_expand_tabs = 1

ウェブサーバーにコンテンツを置くやうな場合は、使用したいエンコーディング名を |g:html_use_encoding| で指定することを强く推奬する。

エンコーディングが指定されてゐない場合は、|2html.vim| は ’fileencoding’ が設定されてゐれば ’fileencoding’ の値から、設定されてゐなければ ’encoding’ の値から、適切な IANA 名が使用される。特定の ’buftype’ に對しては ’encoding’ が常に使用される。’fileencoding’ は選擇されたドキュメントエンコーディングに合ふやうに設定される。

自動設定は |encoding-names| に擧げられたエンコーディング名に對して機能するが、TOhtml は多くのブラウザーでサポートされてゐるエンコーディングのみ自動設定する。自動設定の對象外のエンコーディングを使用したい場合は明示的にそれを設定することができる (下記オプション參照)。IANA 名については http://www.iana.org/assignments/character-sets を參照。

Note:
初期設定ではすべての Unicode エンコーディングは BOM なし UTF-8 として HTML 生成される (W3C 推奬):

g:html_use_encoding

初期設定: なし。上述のとほり、’fileencoding’ の値に應じて IANA 名が使はれる。文字セットの自動設定を上書きするには、g:html_use_encoding に使用したい文字セットの名前を設定する。ウェブサーバーに上げるやうな場合には、UTF-8 のやうな廣くサポートされてゐる文字セットを設定することが推奬される:

:let g:html_use_encoding = "UTF-8"

文字セット指定の行を含めたくない場合は g:html_use_encoding に空文字を設定する (非推奬):

:let g:html_use_encoding = ""

自動的に判斷する設定に戾すには變數 |g:html_use_encoding| を削除する:

:unlet g:html_use_encoding
g:html_encoding_override

初期設定: なし。|encoding-names| で擧げられてゐるエンコーディングに對しては autoload/tohtml.vim で既定の變換が定義されてゐる。

自動設定されない文字セットを |g:html_use_encoding| で明示的に設定したときに、それに對應する ’fileencoding’ を |2html.vim| に指定することができる。

これは文字セット-エンコーディング組の辭書で、TOhtml が使用する組を置き換へたり追加したりできる。

例へば HTML 文字セットの "windows-1252" を "8bit-cp1252" エンコーディングに對應させるなら:

:let g:html_encoding_override = {'windows-1252': '8bit-cp1252'}
g:html_charset_override

初期設定: なし。|encoding-names| で擧げられてゐるエンコーディングに對しては autoload/tohtml.vim で既定の變換が定義されてゐる。それは多くのブラウザーでサポートされてゐる。

|2html.vim| が ’fileencoding’ や ’encoding’ から適切な HTML 文字セットを自動的に決定できない場合に設定する。既定のエンコーディング-文字セット組を上書きすることもできる。例へば、TOhtml はすべての Unicode/UCS エンコーディングに對しては UTF-8 を使用するが、代はりに UTF-16 や UTF-32 を使ふやうにするには次のやうに設定する:

:let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'}

Note:
UTF-32 か UTF-16 でエンコードされたドキュメントはいくつかのメジャーブラウザーで互換性の問題があることが知られてゐる。

g:html_font

初期設定: "monospace"

g:html_font を使つて 1 つないしは複數のフォントを變換されたドキュメントに對して指定できる。このオプションに文字列を設定した場合はシングルクォートで圍まれる。またオプションにリストを設定した場合は全てのリストアイテムがシングルクォートで圍まれ、リストはコンマで結合される。どちらの場合でも、一般的なフォントファミリ名、(CSS を使つての)フォントファミリ名、(CSS を使はない場合の)フォントフェイス名を補ふ爲に "monospace" が追加される。

例:

monospace の font-family: ’Consolas’ を使ふ場合

:let g:html_font = "Consolas"

monospace の font-family: ’DejaVu Sans Mono’, ’Consolas’ を使ふ場合

:let g:html_font = ["DejaVu Sans Mono", "Consolas"]
g:html_use_xhtml

初期設定: 0

0 なら、標準 HTML 4.01 を生成する (可能なら strict)。

1 なら、XHTML 1.0 を生成する (XML 準據の HTML)。

:let g:html_use_xhtml = 1

4. 構文ファイルの覺書

Vim はロードした構文の名前を變數 "b:current_syntax" に記憶してゐる。ある構文が有效な場合だけある設定を行ふにはこの變數が利用できる。例:

:au BufReadPost * if b:current_syntax == "csh"
:au BufReadPost *   do-some-things
:au BufReadPost * endif

ABEL

ABEL のハイライトにはユーザーが定義できるオプションが幾つかある。それらを有效化するにはそれぞれの變數に何か値を設定すれば良い。例:

:let abel_obsolete_ok=1

無效化するには ":unlet" を使用する。例:

:unlet abel_obsolete_ok
變數ハイライト
abel_obsolete_ok古いキーワードをエラーでなく命令文として扱ふ
abel_cpp_comments_illegal’//’ をインラインコメントリーダーとして扱はない

ADA

|ft-ada-syntax| を參照。

ANT

ANT の構文ファイルにはデフォルトで JavaScript と Python の構文ハイライトが含まれてゐる。函數 AntSyntaxScript() の第 1 引數にタグ名を、第 2 引數にファイル名を指定することでその他のスクリプト言語用構文ハイライトをインストールすることができる。例:

:call AntSyntaxScript('perl', 'perl.vim')

これは次のやうな ANT のコードに Perl の構文ハイライトをインストールするものである

<script language = 'perl'><![CDATA[
    # everything inside is highlighted as perl
]]></script>

スクリプト言語を永續的にインストールするには |mysyntaxfile-add| を參照。

APACHE

apache の構文ファイルは Apache HTTP サーバーのバージョン 2.2.3 に基づいた構文ハイライトを提供する。

ASSEMBLY

"*.i" にマッチする名前のファイルのタイプは Progress かアセンブリである。自動檢出が動作しない場合や、Progress を編輯しないことが判つてゐる場合には、起動設定ファイル vimrc に次のコマンドを書くことができる:

:let filetype_i = "asm"

"asm" には使用するアセンブリ言語の種類を指定する。

同じ擴張子を使用してゐるアセンブリ言語はたくさんある。そのため、ユーザーは自分が使つてゐる種類を選擇するか、もしくはアセンブリファイルそのものに Vim がそれと判斷できるやうな行を追加しなければならない。現在は以下の構文ファイルが利用可能:

asmGNU アセンブラ (デフォルト)
asm68kモトローラ 680x0 アセンブラ
asmh8300日立 H-8300 用 GNU アセンブラ
ia64インテル Itanium 64
fasmFlat アセンブラ (http://flatassembler.net)
masmマイクロソフトアセンブラ (たぶん 80x86 汎用)
nasmネットワイドアセンブラ
tasmターボアセンブラ (80x86, Pentium, MMX の命令コードを含む)
picPIC アセンブラ (現在は PIC16F84 用)

アセンブリファイルに次のやうな行を書き加へるのが一番柔軟である:

asmsyntax=nasm

ここで、"nasm" は實際に使用するアセンブリ構文の名前に置き換へること。この記述はファイルの先頭 5 行以內に書いてなければならない。この文字列の前後に非空白文字があつてはならない。Note asmsyntax=foo を指定するのはモードライン (|modeline|) で ft=foo と設定するのと同じであり、設定がぶつかつたときはモードラインの設定が先に處理される (特に、例へばモードラインで ft=asm と設定すると、asmsyntax があつても GNU 構文强調表示が使はれることになる)。

構文の種類はバッファ變數 b:asmsyntax を設定することで常にそちらが優先される:

:let b:asmsyntax = "nasm"

自動にしろ手動にしろ b:asmsyntax が設定されてゐないときには、グローバル變數 asmsyntax が使用される。これによりデフォルトのアセンブリ言語を設定することができる:

:let asmsyntax = "nasm"

最後の手段として、何も設定されてゐない場合には、"asm" 構文が使用される。

ネットワイドアセンブラ (nasm.vim) の補助ハイライト

機能を有效化するには:

:let   {variable}=1|set syntax=nasm

無效化するには:

:unlet {variable}  |set syntax=nasm
變數ハイライト內容
nasm_loose_syntax非オフィシャルな擴張構文をエラーとしない (パーサー依存; 非推奬)
nasm_ctx_outside_macroマクロ外のコンテキストをエラーとしない
nasm_no_warn潛在的に危險な構文をToDoとしてハイライトしない

ASPPERL and ASPVBS

*.asp と *.asa といふ名のファイルはどちらも Perl もしくは Visual Basic のスクリプトたりえる。Vim にとつてこれを判別するのは難しいので、グローバル變數を設定することでどちらを使用するのか宣言することができる。どちらでも Perl スクリプトを使用するなら:

:let g:filetype_asa = "aspperl"
:let g:filetype_asp = "aspperl"

Visual Basic を使用するなら次のやうに設定する:

:let g:filetype_asa = "aspvbs"
:let g:filetype_asp = "aspvbs"

BAAN

baan.vim は リリース BaanIV から SSA ERP LN まで、3 GL と 4 GL プログラミング兩方に對應した構文を定義してゐる。たくさんの標準的な定義/定數がサポートされてゐる。

次を |.vimrc| に書いておくと、ある種のコーディング標準違反を敎へてくれる:

let baan_code_stds=1

以下の變數によつて、樣々なレベルで構文折り疊みを有效にできる (これらはユーザーの |.vimrc| で設定すること)。ソースブロックと SQL についてより複雜な折り疊みを行ふと CPU に負荷がかかる。

折り疊みを有效にし、函數レベルで折り疊みをするにはかうする:

let baan_fold=1

次の設定を行ふと、if, while, for ... のやうなソースブロックレベルの折り疊みが有效になる。キーワード begin/end の前のインデントが等しくなければならない (スペースとタブは異なるとみなされる)。

let baan_fold_block=1

次を設定すると SELECT, SELECTDO, SELECTEMPTY ... のやうな埋め込み SQL ブロックの折り疊みが有效になる。キーワード begin/end の前のインデントが等しくなければならない (スペースとタブは異なるとみなされる)。

let baan_fold_sql=1

Note:
ブロック折り疊みを有效にすると、小さな折り疊みがたくさんできるかもしれない。|.vimrc| でオプション ’foldminlines’ と ’foldnestmax’ を |:set| するか、.../after/syntax/baan.vim 內で |:setlocal| をする (|after-directory| を參照) とよいかもしれない。例:

set foldminlines=5
set foldnestmax=6

BASIC

Visual Basicも「通常の」BASIC も、どちらも擴張子には ".bas" が使用される。どちらが使用されてゐるか判別するのに、Vim はファイルの先頭5行以內に "VB_Name" といふ文字列が存在するかどうかを檢査する。存在しなければ、ファイル形式は "basic" となり、さうでなければ "vb" となる。擴張子が ".frm" のファイルは常に Visual Basic として扱はれる。

C

C には幾つかの補助的なハイライト方法がある。それらを有效化するには對應した變數に値を設定する。例:

:let c_comment_strings = 1

これを無效化するには ":unlet" を使ふ。例:

:unlet c_comment_strings

C++ のハイライトに移行するための別の方法:

:set filetype=cpp
變數ハイライト內容
c_gnuGNU gcc 固有の要素
c_comment_stringsコメント內の文字列と數値
c_space_errors行末の空白文字とタブ文字前のスペース文字
c_no_trail_space_error... 但し行末の空白文字は除外
c_no_tab_space_error... 但しタブ文字前のスペース文字は除外
c_no_bracket_error[] の中の {} をエラーとして表示しない
c_no_curly_error{ と } が第 1 桁にあるときを除き、[] と () の內側の {} をエラーとして表示しない。デフォルトでエラーとして表示される。缺落した ")" を見つけられないため。
c_curly_error對應する { がない } をハイライトする。これを有效にすると、ファイルの先頭から同期が始まるため、遲くなる
c_no_ansiANSI 標準の型と定數をハイライトしない
c_ansi_typedefs... 但し標準 ANSI 型はハイライトする
c_ansi_constants... 但し標準 ANSI 定數はハイライトする
c_no_utf文字列中の \u と \U をハイライトしない
c_syntax_for_hファイル *.h に C++ ではなく C の構文を適用し、objcpp ではなく objc の構文を適用する。
c_no_if0"#if 0" のブロックをコメントとしてハイライトしない
c_no_cformat文字列中の "%" によるフォーマットをハイライトしない
c_no_c99C99 の標準アイテムをハイライトしない
c_no_c11C11 の標準アイテムをハイライトしない
c_no_bsdBSD 特有の型をハイライトしない

foldmethod’ が "syntax" に設定されてゐると、/* */ のコメントと { } のブロックが折り疊まれる。コメントを折り疊みたくなければこのやうにする:

:let c_no_comment_fold = 1

"#if 0" のブロックも同樣に折り疊まれる。折り疊みたくなければこのやうにする:

:let c_no_if0_fold = 1

上方向にスクロールしてゐるときにハイライト表示がをかしくなり、それが <CTRL-L> で再描畫すると直るやうなら、內部變數 "c_minlines" にもつと大きな値を設定すれば解決できるかもしれない:

:let c_minlines = 100

これにより構文判定のシンクロナイズ位置が表示開始行の 100 行手前に設定される。初期設定の値は 50 行 (c_no_if0 を使用した場合は 15 行) である。ただしこれには、大きな値を設定すると再描畫が遲くなるといふ短所がある。

"#if 0" / "#endif" のブロックをコメントとしてハイライトしてゐる場合には、"#if 0" がウィンドウのトップから "c_minlines" 以內にある時にしか正しく動作しないことに注意する。長い "#if 0" のブロックを使用した場合には、それは正しくハイライトされない。

コメント內で追加要素にマッチを行ふには、クラスタ cCommentGroup を使用する。

例:

:au Syntax c call MyCadd()
:function MyCadd()
:  syn keyword cMyItem contained Ni
:  syn cluster cCommentGroup add=cMyItem
:  hi link cMyItem Title
:endfun

ANSI の定數はグループ "cConstant" でハイライトされる。これには "NULL", "SIG_IGN" やその他のものが含まれる。しかし ANSI 標準でないもの、例へば "TRUE" は含まれない。もしもこれが紛らはしいならば、cConstant 用のハイライトを削除する:

:hi link cConstant NONE

文法上エラーではないはずの ’{’ と ’}’ がエラーとしてハイライトされてしまふ場合には、cErrInParen 及び cErrInBracket のハイライトをリセットする。

C ファイルで折り疊みをするには、以下の行を ’runtimepath’ 中の "after" ディレクトリ內のファイルに加へるとよい。Unix なら ~/.vim/after/syntax/c.vim に加へるとよいだらう:

syn sync fromstart
set foldmethod=syntax

CH

C/C++ インタープリター。Ch は C に似た構文ハイライトを持ち、C の構文ファイルに基づいてゐる。C で利用できる設定については |c.vim| を參照。

變數を設定すれば、*.h ファイルに對して C, C++ でなく Ch の構文を使ふやうにすることができる:

:let ch_syntax_for_h = 1

CHILL

Chill の構文ハイライトはCに似てゐる。設定に關しては |c.vim| を參照。それに加へて次のものがある:

chill_space_errorsc_space_errors と同樣
chill_comment_stringc_comment_strings と同樣
chill_minlinesc_minlines と同樣

CHANGELOG

ChangeLog では行頭のスペースのハイライトできる。これをオフにしたいなら、次の行を .vimrc に加へる:

let g:changelog_spacing_errors = 0

これは次に ChangeLog ファイルを編輯するときから有效になる。バッファごとに設定するには "b:changelog_spacing_errors" を使ふ (構文ファイルを讀み込む前に設定すること)。

例へばスペースをエラーとするかどうかなどのハイライト方法を變へることができる:

:hi link ChangelogError Error

ハイライトをやめるには:

:hi link ChangelogError NONE

これは卽座に有效になる。

CLOJURE

デフォルト構文グループは、變數 g:clojure_syntax_keywords や b:clojure_syntax_keywords を用ゐて追加できる。値には構文グループの名前をキーとし、値にカスタム識別子の |List| を持つ |Dictionary| を指定する:

let g:clojure_syntax_keywords = {
    \ 'clojureMacro': ["defproject", "defcustom"],
    \ 'clojureFunc': ["string/join", "string/replace"]
    \ }

有效な構文グループについては、Clojure 構文スクリプトを參照。

バッファ變數 (|buffer-variable|) b:clojure_syntax_without_core_keywords がセットされると、言語定數と特定のフォームにのみマッチする。

g:clojure_fold を設定するとシンタックスエンジンに基づいた Clojure コードの折り疊みが有效化される。複數行に渡るリスト、ベクタ、マップなどを標準の Vim を使つて折り疊みできる |fold-commands|。

このオプションは rainbow-parentheses プラグインのやうな、角カッコの構文範圍を變更するやうなスクリプトを使つてゐるときは機能しない。

このオプションは初期設定でオフになつてゐる。

初期設定

let g:clojure_fold = 0

COBOL

既存の COBOL コードに要求されるハイライト方法と、新規に開發されるコードに要求されるそれには違ひがある。この違ひはコードのおかれてゐる狀況 (保守 vs 開發) やその他の要素によつて決定する。既存コードのハイライトを行ふには .vimrc に次の行を加へる:

:let cobol_legacy_code=1

これを再び無效にするには次のやうにする:

:unlet cobol_legacy_code

COLD FUSION

ColdFusion には獨自版の HTML コメントが存在する。ColdFusion のコメントハイライトを有效化するには、次の行を起動設定ファイルに加へる:

:let html_wrong_comments=1

ColdFusionの 構文ファイルは HTML 用構文ファイルに基づいてゐる。

CPP

大部分は |ft-c-syntax| と同じ。

變數强調表示
cpp_no_cpp11C++11 標準のアイテムを强調表示しない
cpp_no_cpp14C++14 標準のアイテムを强調表示しない

CSH

これは "csh" といふ名前のシェルに對應してゐる。システムによつては實際に使はれてゐるのがtcshである場合もあることに注意。

ファイルが csh か tcsh かを判定するのは難しいことがよく知られてゐる。いくつかのシステムでは /bin/csh を /bin/tcsh にシンボリックリンクしてゐることが、この判別をほぼ不可能にしてゐる。Vim が閒違つた判定をする場合には變數 "filetype_csh" を設定することができる。

csh を使ふには:

:let g:filetype_csh = "csh"

tcshを使ふには:

:let g:filetype_csh = "tcsh"

擴張子が tcsh であるか標準的な tcsh ファイル名 (.tcshrc, tcsh.tcshrc, tcsh.login) を持つスクリプトはすべて tcsh ファイル形式とされる。他の tcsh/csh スクリプトは、"filetype_csh" 變數が存在しない限り、すべて tcsh とみなされる。變數 "filetype_csh" が存在するならファイル形式はその値にセットされる。

CYNLIB

Cynlib ファイルは、ハードウェアのモデリングとシミュレーションを行ふ Cynlib クラスライブラリを使用した C++ ファイルである。通常 Cynlib のファイルは .cc や .cpp といふ擴張子を持つので、Cynlib ではない C++ ファイルと區別するのは非常に困難である。だから .cc ファイルを Cynlib でハイライトする際には、ファイル .vimrc に次の行を加へる:

:let cynlib_cyntax_for_cc=1

cpp ファイルについても同樣 (この擴張子は通常 Windows だけで使用される)

:let cynlib_cyntax_for_cpp=1

これらを再び無效にするには次のコマンドを使用する:

:unlet cynlib_cyntax_for_cc
:unlet cynlib_cyntax_for_cpp

CWEB

"*.w" にマッチする名前のファイルのタイプは Progress か CWEB である。自動檢出が動作しない場合や、Progress を編輯しないことが判つてゐる場合には、起動設定ファイル vimrc に次のコマンドを書くとよい:

:let filetype_w = "cweb"

DART

Dart は、モバイル開發、デスクトップ、Web およびバックエンドアプリケーションの開發に使用される、オブジェクト指向で型定義されたクラス定義のガーベッジコレクション言語です。Dart は、C, Java および JavaScript から派生した C に似た構文を使用し、Smalltalk, Python, Ruby などから採用された機能を備へてゐます。

言語とその開發環境の詳細については、公式の Dart 言語 Web サイト https://dart.dev を參照してください。

dart.vim 構文は、Dart ステートメント、豫約語、型宣言、ストレージクラス、條件、ループ、補閒値およびコメントを檢出してハイライトします。Flutter やその他の Dart フレームワークからサポートしてゐるイディオムはありません。

變更、修正? 以下を介して問題またはプルリクエストを送信します:

https://github.com/pr3d4t0r/dart-vim-syntax/

DESKTOP

この構文ファイルの本來の目的は、freedesktop.org 標準の .desktop と .directory を構文ハイライトすることである:

http://standards.freedesktop.org/desktop-entry-spec/latest/

しかし實際にはこの標準を完全に實裝したものはほとんどない。なのでこれは全ての ini ファイルをハイライトする。ただし次を vimrc ファイルに書くことによつて嚴格に標準に準據したハイライトをさせることもできる:

:let enforce_freedesktop_standard = 1

DIFF

diff 構文ハイライトは、通常ローカライズされた {譯注: 英語以外の} diff ヘッダも檢出する。ファイルにとても長い行が含まれる場合、この機能は低速になる。ローカライズヘッダへの對應を無效化するには:

:let diff_translations = 0

|diff-slow| も參照。

DIRCOLORS

dircolors ユーティリティ用のハイライト定義には、Slackware GNU/Linux ディストリビューション版の dircolors に對應するためのオプションがある。このオプションはほとんどのバージョンでは無視されるいくつかのキーワードを付け加へる。しかし Slackware システムでは dircolors はこれらのキーワードを認め、處理に用ゐる。Slackware キーワードを有效化するには次を起動設定ファイルに付け加へればよい:

let dircolors_is_slackware = 1

DOCBOOK または DOCBOOK XML または DOCBOOK SGML

DocBook ファイルには 2 つの種類: SGML と XML がある。どちらのタイプを使用するのかを指定するには變數 "b:docbk_type" をセットする。Vim がそのタイプを認識できた場合にはこれを自動的に行ふ。認識できなかつた場合にはデフォルトは XML になる。 これを手動で設定するには:

:let docbk_type = "sgml"

または:

:let docbk_type = "xml"

これは構文ファイルを讀み込む前に行ふ必要がある。しかし構文ファイルの讀み込みは込み入つてゐる。より單純な方法はファイル形式を "docbkxml" または "docbksgml" にセットすることである:

:set filetype=docbksgml

または:

:set filetype=docbkxml

DocBook のバージョンを指定できる:

:let docbk_ver = 3

設定しない場合は 4 が使はれる。

DOSBATCH

DOS バッチファイルのハイライトにはオプションが1つある。このオプションにより Windows 2000 で導入されたコマンドインタープリターの新しい擴張機能がサポートされ、變數 dosbatch_cmdextversion によりその有效/無效が制禦される。Windows NT では値 1 を設定し、Windows 2000 では 2 を設定するのが良い。次のやうにすれば使用するバージョンを選擇できる:

:let dosbatch_cmdextversion = 1

變數が定義されてゐない際のデフォルトは Windows 2000 をサポートする 2 となる。

2 番目のオプションは、*.btm ファイルを "dosbatch" (MS-DOS バッチファイル) タイプか "btm" (4DOS バッチファイル) タイプのどちらと判定するかを指定する。デフォルトでは後者が使はれる。前者を使ふには、次のやうにする:

:let g:dosbatch_syntax_for_btm = 1

この變數が定義されてゐない、または 0 であると btm の構文が使はれる。

DOXYGEN

Doxygen は Javadoc に似た特殊なフォーマットからコードのドキュメントを生成する。この構文スクリプトは c, cpp, idl, php のファイルに對して Doxygen のハイライトを追加する。また、Java に對しても使へる。

Doxygen のフォーマットを有效にするにはいくつかの方法がある。手動、またはモードラインでそのファイルの syntax に ’.doxygen’ を追加する。例:

:set syntax=c.doxygen

または

// vim:syntax=c.doxygen

C, C++, C#, IDL, PHP のファイルに對しては、グローバルまたはバッファローカルな變數 load_doxygen_syntax を設定すれば自動的にこれが行はれる。次の行を .vimrc に加へる。

:let g:load_doxygen_syntax=1

構文ハイライトに影響を與へる變數がいくつかある。また、これらは標準でないハイライトオプションに關係してゐる。

變數既定値效果
g:doxygen_enhanced_color
g:doxygen_enhanced_colour
0Doxygen コメントに對して標準でないハイライトを行ふ。
  
doxygen_my_rendering0HTML の太字、斜體、html_my_rendering に對する下線の描畫を無效にする。
  
doxygen_javadoc_autobrief10 にすると JavaDoc の autobrief に對するハイライトを無效にする。
  
doxygen_end_punctuation’[.]’brief の終はりを示す句讀點にマッチする正規表現。

また、次のハイライトグループを設定すると便利である。

ハイライト效果
doxygenErrorCommentcode, verbatim, dot セクション中で句讀點が拔けてゐる終了コメントの色
doxygenLinkError\link セクションで \endlink が拔けてゐるときの終了コメントの色。

DTD

初期狀態では DTD 構文ハイライトは大/小文字を區別する。區別しないやうにするには、起動設定ファイルに次の行を書き足す:

:let dtd_ignore_case=1

DTD 構文ファイルでは未知のタグをエラーとしてハイライトする。これが煩はしいならば、構文ファイル dtd.vim が讀込まれる前に:

:let dtd_no_tag_errors=1

と設定することで無效化することができる。定義部內のパラメーターのエンティティ名はハイライトグループ ’Type’、句讀點と ’%’ は ’Comment’ を使用してハイライトされる。パラメーターエンティティの實體はハイライトグループ ’Constant’ を、區切り文字の % と ; はハイライトグループ ’Type’ を使用してハイライトされる。以下を設定するとこれを無效化できる:

:let dtd_no_param_entities=1

XML內の埋め込み DTD をハイライト表示するために、DTD の構文ファイルは xml.vim からも參照される。

EIFFEL

Eiffel は大小文字の區別をしないけれども、スタイルガイドラインが示すやうに、構文ハイライトではそれらが區別される。これにより大小文字が違へば違ふクラス名としてハイライト表示することが可能になつてゐる。大小文字の違ひを無視してハイライトを行ふならば、起動設定ファイルに次の行を書き足す:

:let eiffel_ignore_case=1

これを行つてもコメント內のクラス名と TODO の印には大小文字の區別がなされる。

逆に、もつと嚴密に檢査するには、次の行のいづれかを書き足す:

:let eiffel_strict=1
:let eiffel_pedantic=1

eiffel_strict を設定すると "Current", "Void", "Result", "Precursor" そして "NONE" の 5 つの既定單語について、不正な大小文字の使用を捕捉し、機能やクラス名としてそれらが使用されれば警告を與へるやうになる。

eiffel_pedantic を設定すると、Eiffel のスタイルガイドラインを相當に嚴格に强制する。(キーワードを大文字で書く時代遲れの方法と同樣に、大小文字を任意にミックスしたやうなものが捕捉される) "Current", "Void", "Result" そして "Precursor" の小文字版を使用するには、大小文字を區別するハイライト方法を無效化する代はりに:

:let eiffel_lower_case_predef=1

といふ方法を使ふことができる。

ISE が提案し、實驗的に幾つかのコンパイラでは取り扱ふことのできる、新しい生成構文は次のコマンドで使用できるやうになる:

:let eiffel_ise=1

最後に幾つかのベンダーは16進數定數値をサポートしてゐる。それを取り扱ふには:

:let eiffel_hex_constants=1

この行を起動設定ファイルに書き足す。

EUPHORIA

Euphoria には 2 つの構文强調表示ファイルがある。1 つは Euphoria バージョン 3.1.1 用で、初期設定ではこれが使はれる。もう 1 つは Euphoria 4.0.5 以降用である。

Euphoria バージョン 3.1.1 (http://www.rapideuphoria.com/) は DOS プラットフォームのアプリケーションの開發にまだ必要とされてゐる。Euphoria バージョン 4 (http://www.openeuphoria.org/) はそれをサポートしてゐない。

以下の擴張子のファイルは自動的に Euphoria ファイルタイプとして認識される:

*.e, *.eu, *.ew, *.ex, *.exu, *.exw, *.E, *.EU, *.EW, *.EX, *.EXU, *.EXW

Euphoria の構文强調ファイルを選擇するには (*.e や *.E 擴張子のファイルが自動的に Euphoria ファイルタイプとして認識された場合でも)、次の行を設定ファイルに加へる:

:let filetype_euphoria="euphoria3"

または

:let filetype_euphoria="euphoria4"

ERLANG

Erlang は Ericsson が開發した函數型プログラミング言語である。次の擴張子のファイルが Erlang ファイルとして認識される:

erl, hrl, yaws

組み込み函數 (BIFs: built-in functions) は初期設定で强調表示される。それを無效化するには vimrc で次のやうに設定する:

:let g:erlang_highlight_bifs = 0

いくつかの特殊アトムを强調表示するには、vimrc で次のやうに設定する:

:let g:erlang_highlight_special_atoms = 1

FLEXWIKI

FlexWiki は http://www.flexwiki.com で入手できる ASP.NET ベースの wiki パッケージである。

Note:
このサイトは現在機能してゐない。Wikipedia によると 2009 年に開發がストップした。

FlexWiki の構文のほとんどの一般的な要素に對して構文ハイライトができる。FlexWiki の tplugin スクリプトはバッファローカルなオプションを設定し、FlexWiki ページの編輯をより便利にする。FlexWiki は改行を新しい段落の開始とみなすので、この ftplugin は ’tw’ を 0 に設定し (行の長さを制限しない)、’wrap’ をオンにし (長い行を水平スクロールさせるのでなく、折り返す)、’linebreak’ をオンにする (畫面上の最後の文字でなく ’breakat’ の文字で折り返す)、などを行ふ。また、デフォルトでは無效にされてゐるキーマップも含んでゐる。

"j"、"k"、カーソルキーで表示行單位で移動するやうにするキーマップを有效にするには次を .vimrc に追加する:

:let flexwiki_maps = 1

FORM

FORM ファイルの構文要素に使用するカラースキームには、Conditional, Number, Statement, Comment, PreProc, Type, そして String が、次の文獻で定義される言語仕樣に沿つて行はれる。 文獻: ’Symbolic Manipulation with FORM’ by J.A.M. Vermaseren, CAN, Netherlands, 1991.

初期設定の色に變更を加へるには、次の構文グループを再定義すれば良い:

Note:
構文ファイル form.vim では FORM プリプロセッサーコマンドとディレクティブをそれぞれ、デフォルトでは同じ構文グループにしてゐることに注意。

FORM 用の既定の擴張カラーモードではヘッダー命令と FORM プログラム本體での命令を區別できるやうな色設定が利用可能である。擴張カラーモードを使用可能にするには、ファイル vimrc に次の設定を書き足す:

:let form_enhanced_color=1

擴張モードを使ふことは、gvim で暗いディスプレイを使用した場合にも利點がある。命令文は黃色ではなく明るい黃色で表示され、條件文は視認性のため明るい靑で表示される。

FORTRAN

デフォルトのハイライトと方言

初期設定では Fortran 2008 に適したハイライトが行はれる。Fortran 2008 は以前のバージョン (Fortran 2003, 95, 90, 77) のほぼ上位互換であるため、この初期設定はほとんどのユーザーにとつて適してゐるだらう。

Fortranソースコードの形式

Fortran のソースコードには固定形式と自由形式が有る。形式が誤つて設定されてゐると構文ハイライトが正しくされないことに注意。

新規に Fortran のファイルを作成する場合には、構文ファイルは固定形式であると假定する。常に自由形式を使ふ場合には

:let fortran_free_source=1

これを .vimrc でコマンド :syntax を實行する前に行ふ必要がある。常に固定形式を使ふには

:let fortran_fixed_source=1

これも .vimrc でコマンド :syntax を實行する前に行ふ必要がある。

ソースコードの形式もしくは標準的な方法ではないがファイルの擴張子に依存する場合、もつとも簡單な方法は ftplugin の中で fortran_free_source を設定する。ftplugin ファイルのより詳細な情報は |ftplugin| を參照。

Note:
あなたの .vimrc ファイルで "filetype plugin indent on" コマンドを "syntax on" よりも前に實行した場合にのみ動作する事に注意する。

既存の Fortran ファイルを編輯する時には、變數 fortran_free_source が設定されてゐれば構文ファイルは自由形式のソースであると假定し、變數 fortran_fixed_source が設定されてゐれば固定形式のソースであると假定する。

どちらも設定されてゐない場合は、ifort, gfortran Cray, NAG, PathScale コンパイラ (.f, .for, 固定形式の .f77, .f90, .f95, .f03, 自由形式の .f08) の共通的な擴張子の變換を試みてどのソースが使はれてゐるのかを判定する。

それでもうまく行かない場合はファイルの先頭 250 行の行頭5カラムを調べて、その形式が固定形式なのか自由形式なのかの判定を試みる。自由形式のコードの兆候が見られない場合には、固定形式であると見なされる。

このアルゴリズムはほとんどのケースにおいて有效に機能する。しかしいくつかのケース、例へば先頭 500 行以上が行コメントで占められてゐるやうなファイルでは、構文ファイルが固定形式の fortran のコードであると誤つた判斷をしてしまふかもしれない。

そのやうな場合には、ファイルの先頭 500 行 の行頭 5 桁のどこかに、コメント以外の命令文を追加し、ファイルの保存 (:w) そして再讀込 (:e!) を行ふ。

Fortran ファイル內のタブ文字

標準の Fortran ではタブ文字は認識されない。固定桁位置での境界を必要とする固定形式の Fortran ソースコードでタブ文字を使用するのは良いアイデアではない。從つてタブ文字はエラーとしてハイライトされる。

しかしながらプログラマによつてはタブ文字を使用することを望む場合があるだらう。Fortran ファイルにタブ文字が含まれてゐる場合には、變數 fortran_have_tabs をコマンド :syntax が實行される前に

:let fortran_have_tabs=1

このやうに .vimrc で設定すれば良い。タブ文字を使ふ場合には殘念ながら、構文ファイルによつて不正な餘白を檢出することができなくなる。

Fortran ファイルの構文による折り疊み

foldmethod=syntax を使用したいならば、まづ變數 fortran_fold を

:let fortran_fold=1

このやうなコマンドで設定しなければならない。これにより構文ファイルはプログラム單位の領域、プログラム命令文で始まるメインプログラム、サブルーチン、函數、サブプログラム、ブロックデータサブプログラム、そしてモジュールといつたプログラム單位の領域で折り疊みを定義する。同時に變數 fortran_fold_conditionals を

:let fortran_fold_conditionals=1

このやうに設定すると、do ループ、if ブロック、そして select-case 構造の領域が折り疊まれる。さらに變數 fortran_fold_multilinecomments も

:let fortran_fold_multilinecomments=1

このやうに設定すれば、3 行以上にわたつて續くコメントの領域が折り疊まれる。大きなファイルに對してこのやうに構文による折り疊みを使用すると、非常に遲くなることに注意。

fortran_fold を設定し、fortran_fold_conditionals か fortran_fold_multilinecomments (どちらか片方でも兩方でも) を設定した場合には、foldmethod=syntax を設定してある時に、Vim はファイルを折り疊む。2 つのプログラム單位の閒にあるコメントや空行は折り疊まれない。なぜならそれらは構文によつて定義されるプログラム單位に屬してゐないからである。

より正確な Fortran の構文

變數 fortran_more_precise を

:let fortran_more_precise=1

このやうなコマンドで設定した場合には、構文ハイライトがより正確になるが動作は遲くなる。とりわけ、do, goto そして算術 if 命令文に使用される命令ラベルが、do, if, select もしくは forall 構造の終端で使用される名前として認識されるやうになる。

非標準のFortran方言

構文ファイルは 2 つの Fortran 方言 (f08 と F) をサポートしてゐる。ほとんどの人はデフォルトのハイライト (f08) で用が足りるだらう。2008 標準で削除または廢止豫定となつたいくつかの古い構造は todo アイテムとしてハイライトされる。

F を使ふなら、方言を適切に設定することで、F から除外された他の古い機能は todo アイテムとしてハイライトされ、そして自由形式のソースコードが假定される。

方言を設定する方法はいくつかある。もしあなたの fortran ファイルがすべて同じ方言なら、グローバル變數の fortran_dialect を .vimrc の syntax on より前で設定すればよい。値は大文字と小文字が區別される。fortran_dialect に設定できる値は "f08" か "F" である。fortran_dialect に無效な値を設定した場合は無視される。

方言がファイルの擴張子に依存して決定される場合には、ftplugin ファイル內でバッファローカル變數を設定するのが最良の手段である。ftplugin ファイル付いての詳細な情報は |ftplugin| を參照。例へば、.f90 といふ擴張子のすべてのファイルが F サブセットで書かれてゐるなら、ftplugin ファイルには次のやうなコードが含まれるだらう

let s:extfname = expand("%:e")
if s:extfname ==? "f90"
   let b:fortran_dialect="F"
else
   unlet! b:fortran_dialect
endif

これは .vimrc で "syntax on" より前に "filetype plugin indent on" が書かれてゐないと機能しないことに注意。

擴張子によつて方言を一意に決定できない場合にはもつと良い制禦方法が必要になる。各ファイルの先頭 3 行以內にコメントで "fortran_dialect=xx" (xx は F or f8) といふ命令を書けば方言の設定を上書することができる。

例へば、古い .f ファイルは古い方言で書かれてゐるが、新しい .f ファイルは F コードで書きたいやうな場合、後者を F ファイルとして認識させるには、そのファイルの先頭 3 行以內に Fortran のコメントとして次のやうに書く

! fortran_dialect=F

この構文ファイルの以前のバージョンでは fortran_dialect の値として "f77", "f90", "f95", "elf" が設定できた。これらの値が設定されてゐるときは "f08" として扱はれる。"elf" を設定してゐた人は "F" を試してみるといいかもしれない。

syntax/fortran.vim スクリプトにはヒントとなるコメントが含まれてゐる。行をコメントアウトしたりコメントを外したりすることで、(a) 非標準またはベンダー固有構文の認識を有效化したり、(b) 2008 標準で削除または廢止豫定となつた機能を todo アイテムとしてハイライトしないやうにしたりできる。

制限事項

丸カッコチェックは、閉ぢカッコの不足については捕捉できない。ホレリス定數は認識されない。幾つかのキーワードはFortran90の豫約語ではないので誤つてハイライトされる。

Fortran に關するその他の情報は |ft-fortran-indent| や |ft-fortran-plugin| を參照。

FVWM CONFIGURATION FILES

fvwmrc または fvwm2rc といふパターンにマッチしない Fvwm 設定ファイルを認識させるには、ファイル myfiletypefile.vim で あなたのシステムに合つたパターンを設定しなければならない。具體的には、變數 "b:fvwm_version" に Fvwm のメジャーバージョンを指定し、オプション ’filetype’ に fvwm を設定する。

例へば、/etc/X11/fvwm2/配下の全てのファイルをFvwm2の設定ファイルと認識させるには次のやうにする:

:au! BufNewFile,BufRead /etc/X11/fvwm2/*  let b:fvwm_version = 2 |
                                       \ set filetype=fvwm

全ての有效な色の名前を Vim にハイライトさせるには、システムの色データベース (rgb.txt) の位置を知らせる必要がある。これには變數 "rgb_file" にその場所を設定する。色データベースが /usr/X11/lib/X11/ にあるとすれば:

:let rgb_file = "/usr/X11/lib/X11/rgb.txt"

このやうな內容をファイル .vimrc に追加する。

GSP

GSP ページのデフォルトカラーは |html.vim| にて定義され、Java コード (Java タグ內部やインラインのバッククォート內) のカラーは |java.vim| にて定義される。インライン Java コードをハイライトするために、|html.vim| で定義される以下の HTML グループは、再定義されてゐる:

htmlString
htmlValue
htmlEndTag
htmlTag
htmlTagN

書かれた大抵の場所のインライン Java コードは適切にハイライトされるが、幾つかの特殊なケースではさうはならない。他の HTML グループ內にインライン Java コードを書いてそれが正しくハイライトされない場合には、必要な行を |html.vim| からコピーして gspJava を constains 節に加へれば、正しくハイライトされるやうになる。

インライン Java を示すバッククォートは、目立ちやすくするために htmlError グループでハイライトされる。

GROFF

groff 構文ファイルは |nroff.vim| のラッパーであり、使用例と設定例についてはそこの下に書かれてゐる注意を參照。このラッパーの目的は、モードライン (|modeline|) か個人用のファイル定義ファイル (|filetype.txt| 參照) からファイル形式をセットすることにより、groff 構文擴張を設定することである。

HASKELL

Haskell 構文ファイルは、プレーン Haskell コードと literate Haskell コード兩方をサポートしてゐる。後者は Bird スタイルと TeX スタイル兩方に對應してゐる。Haskell 用の構文ハイライトは C プリプロセッサー命令もハイライトできる。

區切り文字もハイライトさせるには (明るい背景色を使つてゐるなら便利)、次を .vimrc に書き足す:

:let hs_highlight_delimiters = 1

True と False を通常の識別子と區別してキーワードとして扱ふにはこれを書き足す:

:let hs_highlight_boolean = 1

プリミティブ型の名前をキーワードして扱ふには:

:let hs_highlight_types = 1

比較的一般的な型の名前をキーワードとして扱ふには:

:let hs_highlight_more_types = 1

デバッグ函數の名前をハイライトさせるには、これを.vimrcに書き足す:

:let hs_highlight_debug = 1

Haskell 用の構文ハイライトは C プリプロセッサー命令もハイライトし、# で始まるが命令として有效でない行をエラーとして警告する。Haskell の演算子の構文は#で始まることもあるため、これらが干涉する。これらをエラーでなく演算子としてハイライトしたいなら、次を .vimrc に書く:

:let hs_allow_hash_operator = 1

literate Haskell コード用の構文ハイライトはファイルが TeX マークアップを含んでゐるかどうか、それに應じて TeX 要素をハイライトするかどうかを自動的に推測しようとする。.vimrc に次のやうな行を書くと、これをグローバルに上書きすることができる

:let lhs_markup = none

と書くとまつたくハイライトしなくする。または

:let lhs_markup = tex

と書くと常に TeX マークアップをハイライトするやうに强制する。より柔軟に、この變數のバッファローカル版を使ふこともできる。例:

:let b:lhs_markup = tex

と書くと特定のバッファに TeX ハイライトさせるやうにする。これはそのバッファに構文ハイライトを有效化するかファイルを讀み込む前に設定しなければならない。

HTML

HTML ファイルのタグ用の構文ファイルは以下のやうに動作する。

開きタグの <> は、閉ぢタグの </> とは異なつた色でハイライトされる。これは意圖的にさうしてある!開きタグにはハイライト ’Function’ が使用され、閉ぢタグにはハイライト ’Type’ が使用される (あなたの環境でこれらがどう定義されてゐるかについては syntax.vim を參照すること)。

既知のタグ名は C 命令文と同じやうにハイライトされる。未知のタグ名は閒違ひを見分けやすくするために、<> や </> と同じやうにハイライトされる。

Note:
引數 (もしくは屬性) 名にも同じことが言へる。既知の屬性名と未知の屬性名には異なるハイライトがなされる。

幾つかの HTML タグは表示する文字種を變更するために使用される。以下のタグは構文ファイル html.vim によつて認識され、その內容は通常の文字種とは異なる文字種で表示される: <B> <I> <U> <EM> <STRONG> (<EM> は <I> のエイリアスとして使はれ、<STRONG> は <B> のエイリアス)、<H1> - <H6>, <HEAD>, <TITLE> そして <A> ただし href が含まれてゐてリンクとして使はれてゐる (例 <A href="somefile.html"> )場合。

それらのテキストの文字種を變更するには、以下の構文グループを再定義する必要がある:

この再定義が機能するためには最後の 2 つを除くすべてを再定義しなければならない。最後の 2 つ、htmlTitle と htmlH[1-6] は任意である。そして次の變數を vimrc で設定しなければならない (初期化の際に讀み込まれるファイルの順序のせい)。

:let html_my_rendering=1

この例については以下から mysyntax.vim をダウンロードすること。

http://www.fleiner.com/vim/download.html

次の行を vimrc に加へればこの描畫を無效にできる:

:let html_no_rendering=1

HTML コメントはむしろ特別で (詳細は HTML リファレンスドキュメントを參照)、すべてのエラーをハイライトする。しかしその閒違つたスタイル (<!–で始まり–> で終はる) を使ひたいならこれを定義する

:let html_wrong_comments=1

HTML ドキュメント中に埋め込まれた JavaScript や Visual Basic については、文は ’Special’ でハイライトされ、コメントや文字列などは標準のプログラミング言語と同じやうに色づけされる。現在のところサポートされてゐるのは JavaScript と Visual Basic だけであり、他のスクリプト言語はまだ加へられてゐない。

カスケードスタイルシート (CSS) の埋め込みとインラインもハイライトされる。

html プロセッサー言語は複數ある。html.vim はインクルードしやすいやうに簡素に書かれてゐる。html.vim をインクルードするには以下の 2 行をその言語用の構文ファイルに書き足すこと (この例は asp.vim からとった):

runtime! syntax/html.vim
syn cluster htmlPreproc add=asp

そしてプリプロセッサー言語を含むすべての領域をクラスタ htmlPreproc に加へればよい。

HTML/OS (by Aestiva)

HTML/OS 用のカラースキームは以下のやうに機能する:

デフォルトでは函數名と變數名は同じである。これは、Vim は函數と識別子に異なる色を指定しないためである。これを變へるには (函數名を違ふ色にしたいならかうするとよい) 次の行を ~/.vimrc に書き加へる:

:hi Function term=underline cterm=bold ctermfg=LightGray

もちろん好みに應じて ctermfg は違ふ色にしてよい。

HTML/OS に關するもう1つの問題は、ファイルが HTML/OS コーディングであることを示す特別なファイル形式が存在しないことである。そのため、ファイルを開いた後に次のやうにして HTML/OS 構文をオンにしなければならない:

:set syntax=htmlos

HTML/OS コードのブロックの開始と終了を示す文字は、それぞれ << または [[, >> または ]] のどちらであつてもよい。

IA64

Intel Itanium 64 アセンブリ言語用のハイライト。このファイル形式を認識させる方法については |asm.vim| を參照。

*.inc ファイルを IA64 と認識させるには次を .vimrc に書き足す:

:let g:filetype_inc = "ia64"

INFORM

Inform 構文ハイライトは Inform Library によつて提供されるシンボルを含んでゐる。ほとんどのプログラムがそれを利用してゐるためである。Library のシンボルをハイライ トさせたくないなら、次を vim 初期化ファイルに加へる:

:let inform_highlight_simple=1

デフォルトでは Inform プログラムは Z-machine ターゲットと假定され、Z-machine アセンブリ言語シンボルが適切にハイライトされる。もしプログラムが Glulx/Glk 環境をターゲットとしたものなら、次を初期化ファイルに加へる:

:let inform_highlight_glulx=1

かうすると代はりに Glulx オペコードをハイライトし、glk() をシステム函數としてハイライトする。

Inform コンパイラはある古いキーワードをエラーとみなす。普通、これらのキーワードはエラーとしてハイライトされる。これをエラーとしてハイライトするのをやめるには、次を初期化ファイルに加へる:

:let inform_suppress_obsolete=1

デフォルトではハイライトされる言語機能はコンパイラのバージョン 6.30 とライブラリのバージョン 6.11 に從ふ。これより古い Inform 開發環境を使つてゐるなら、次の行を初期化ファイルに加へるとよいかもしれない:

:let inform_highlight_old=1

IDL

IDL (Interface Definition Language) ファイルは RPC 呼び出しを定義するために使はれる。Microsoft の世界では COM インターフェイスと呼び出しの定義にも使はれる。

IDL の構造は單純であるため、ヒューリスティックな方法でなく、完全に文法にのつとったアプローチができる。その結果は巨大でいくぶん冗長であるが、一應は機能するやうである。

idl ファイルには Microsoft 擴張がある。それらのうちいくつかは idl_no_ms_extensions を定義すると無效になる。

より複雜な擴張は idl_no_extensions を定義すると無效になる。

變數效果
idl_no_ms_extensionsMicrosoft 獨自の擴張の一部を無效にする
idl_no_extensions複雜な擴張を無效にする
idlsyntax_showerrorIDL エラーを表示する (少々うるさいがとても助けになる)
idlsyntax_showerror_softエラーに對してデフォルトでよりソフトな色を使ふ

JAVA

java.vim 構文ハイライトファイルはいくつかのオプションを提供してゐる:

Java 1.0.2 では丸括弧の內側に波括弧が入ることは絕對になかつたため、これはエラーと判斷された。Java1.1 以降では (無名クラスとともに) これが可能になつたため、エラーと判斷されなくなつた。もし以前のやうにしたいなら、vim の初期化ファイルに次の行を加へること:

:let java_mark_braces_in_parens_as_errors=1

java.lang.* 中の全ての識別子は常に全てのクラスから見える。これらをハイライトするには次を使ふ:

:let java_highlight_java_lang_ids=1

http://www.fleiner.com/vim/download.html にあるスクリプト javaid.vim をダウンロードすれば、ほとんどの Java 標準パッケージの識別子をハイライトすることもできる。java.io など特定のパッケージの識別子だけをハイライトしたいならばかうする:

:let java_highlight_java_io=1

對應してゐる全パッケージのリストは javaid.vim を參照のこと。

函數を認識する方法は Java コードの書き方に依存するため、函數名はハイライトされない。構文ファイルは函數をハイライトする方法を2つ備へてゐる:

函數宣言が常にタブ、スペース 8 個、スペース 2 個のいづれかでインデントされてゐるなら次のやうにするとよいかもしれない。

:let java_highlight_functions="indent"

しかし、函數とクラスの命名 (大文字・小文字についての) に關する Java ガイドラインにしたがつてゐるなら次を使ふ。

:let java_highlight_functions="style"

もしどちらのオプションもだめで、それでも函數宣言をハイライトしたいなら、java.vim 中の定義を變更するか、もとの java.vim に函數をハイライトするコードを加へて自分用の java.vim を作るかして獨自の定義を作るしかない。

Java 1.1 では、System.out.println() と System.err.println() はデバッグのためだけに使はれるものだつた。そのためデバッグ用の文を區別してハイライトすることができる。それには次の定義を初期化ファイルに加へる:

:let java_highlight_debug=1

するとデバッグ用の文が ’Special’ の文字としてハイライトされるだらう。これらを別の色でハイライトさせるには、以下のグループに對して新しいハイライトを定義すること:

Debug, DebugSpecial, DebugString, DebugBoolean, DebugType

これらはそれぞれ、文、デバッグ文字列に使はれる特別な文字、文字列、ブール型定數、型 (this, super) に使はれる。私はこれらの文に異なる背景色をつけることにしてゐる。

Javadoc は Java プログラム中から特別なコメントを拔き出して HTML ページを作成するプログラムである。標準の設定ではこれらの HTML コードを HTML ファイル (|html.vim| を參照) と同樣にハイライトする。さらにこのコードの中に JavaScript と CSS を書くこともできる (後述)。しかし 4 つの違ひがある:

  1. タイトル(その後にホワイトスペースが續く最初の ’.’ まで、または最初の ’@’ までのすべての文字)は異なる色でハイライトされる(この色を變更するには CommentTitle を變へること)。
  2. テキストは ’Comment’ としてハイライトされる。
  3. HTML コメントは ’Special’ としてハイライトされる。
  4. 特別な Javadoc タグ (@see, @param, ...) は Special として、(@see, @param, @exception などの) 引數は Function としてハイライトされる。

この機能をオフにするには初期化ファイルに次の行を加へること:

:let java_ignore_javadoc=1

以上の Javadoc コメントを使ふ場合、JavaScript, visual basic スクリプト、埋め込み CSS (スタイルシート) のハイライトをすることもできる。これは實際に JavaScript や埋め込み CSS を含む Javadoc コメントがあるときだけ意味がある。これらを有效化するためのオプションは次の通り

:let java_javascript=1
:let java_css=1
:let java_vb=1

ネストした丸括弧に異なる色をつけるには、javaParen, javaParen1, javaParen2 に異なる色を定義する。例へば

:hi link javaParen Comment

あるいは

:hi javaParen ctermfg=blue guifg=#0000ff

上方向にスクロールしてゐてハイライトがをかしくなつた場合 (CTRL-L で再描畫すると直る)、內部變數 "java_minlines" を大きくしてみるとよい:

:let java_minlines = 50

かうすると表示行の 50 行前から構文シンクロナイズが始まるやうになる。デフォルト値は 10 である。大きな値にすることの不利點は、再描畫が遲くなることである。

JSON

json 構文ファイルは、標準で conceal サポート付きのシンタックスハイライトを提供します。conceal を無效にするには:

let g:vim_json_conceal = 0

エラーのシンタックスハイライトを無效にするには:

let g:vim_json_warning = 0

LACE

Lace (Language for Assembly of Classes in Eiffel) は大文字・小文字を無視する。しかしスタイルガイドラインはさうでない。大文字・小文字を區別してハイライトさせるには、vim 變數 ’lace_case_insensitive’ を初期化ファイル中で定義すればよい:

:let lace_case_insensitive=1

LEX

"^%%$" セクションデリミタが、その後にどんなセクションが續くかの手がかりを與へないため、Lex はブルートフォースなシンクロナイズを行ふ。それゆゑ (巨大な lex ファイルなどで) 同期の問題が起こる場合には:

:syn sync minlines=300

の値を變更するとよいかもしれない。

LIFELINES

廢止された函數をエラーとしてハイライトしたい場合は .vimrc で次のやうに設定すること:

:let g:lifelines_deprecated = 1

LISP

lisp の構文ハイライトには 2 つのオプションがある:

g:lisp_instringこの變數が存在すると "(...)" 形式の文字列が、その中身が lisp であるかのやうにハイライトされる。AutoLisp 用に便利である。
g:lisp_rainbowこの變數が存在し、0 以外であると段階の異なる括弧に對して異なるハイライトがつくやうになる。

オプション g:lisp_rainbow は括弧とバッククォートされた括弧に對して 10 段階の異なる色をつける。色づけ段階の多さのため、rainbow モード自身が ctermfg とguifg を使つてハイライトを指定する (rainbow モードでない場合はさうではない)。それゆゑ、ハイライトグループを使ふ普通のカラースキームの影響を受けない。實際にどうハイライトされるかは dark/bright の設定 (|'bg'| を參照) による。

LITE

lite 構文ハイライトには 2 つのオプションがある。

文字列中でSQL構文ハイライトを行つてほしいならかうする:

:let lite_sql_query = 1

シンクロナイズの最小行數はデフォルトで100になつてゐる。他の値に變へたいなら "lite_minlines" をセットすればよい。例:

:let lite_minlines = 200

LPC

LPC はシンプルでメモリ效率的な言語、Lars Pensjö C の略である。LPC のファイル名は通常 *.c である。これらのファイルを LPC と認識すると C プログラムのみを書くユーザーの迷惑になる。LPC 構文を使用したいなら、.vimrc でこの變數をセットすること:

:let lpc_syntax_for_c = 1

これでも適切に動作しない C または LPC のファイルに對してはモードラインを使ふこと。LPC ファイルには:

// vim:set ft=lpc:

LPC と認識されてしまふ C ファイルには:

// vim:set ft=c:

變數をセットしたくないなら全てのLPCファイルでモードラインを使ふこと。

LPC には複數の實裝がある。我々はもつとも廣く使はれてゐるものをサポートしたいと思つてゐる。デフォルトの LPC 文法は MudOS シリーズ用である。MudOS v22 以前を使つてゐるなら、次をセットすることにより sensible モディファイヤをオフにし、v22 以降の新しい efun を無效にするとよい。MudOS の最新版を使つてゐるときはこの變數をセットしないこと:

:let lpc_pre_v22 = 1

LPC の LpMud 3.2 シリーズには:

:let lpc_compat_32 = 1

LPC の LPC4 シリーズには:

:let lpc_use_lpc4_syntax = 1

LPC の uLPC シリーズには:

uLPC は Pike 用に開發されてゐる。なので Pike 構文を代はりに使ひ、ソースファイルの名前を .pike とすること。

LUA

Lua 構文ファイルはバージョン 4.0, 5.0, 5.1, 5.2 に對して使へる (5.2 がデフォルト) グローバル變數 lua_version と lua_subversion を設定することでバージョンを指定することができる。例へば、Lua 5.1 の構文ハイライトを有效にするには次のやうに變數を設定する:

:let lua_version = 5
:let lua_subversion = 1

MAIL

Vim は email の標準的な要素 (ヘッダー、シグネチャ、引用文、URL / email アドレス)の全てをハイライトする。標準的な慣習に從ひ、シグネチャは、"--" とそれに續く任意個の空白、そして改行のみからなる行で始まる。

Vim は ’]’, ’}’, ’|’, ’>’ で始まる行または ’>’ が續く單語を引用文とみなす。引用文中のヘッダーとシグネチャについては、テキストが ’>’ (1 個のスペースが續いてもよい) で引用された場合のみハイライトする。

デフォルトでは mail.vim は先頭表示行の 100 行前までの構文をシンクロナイズさせる。遲いマシンを使つてゐて、一般的に短いヘッダーの email を扱つてゐるなら、これをより小さい値に變へることができる:

:let mail_minlines = 30

MAKE

Makefile ではエラーを見つけやすくするためにコマンドがハイライトされる。しかし、これは色が多すぎるかもしれない。この機能をオフにするにはかうする:

:let make_no_commands = 1

MAPLE

Waterloo Maple Inc による Maple V は記號代數をサポートしてゐる。その言語はユーザーによつて選擇的にロードされる函數のパッケージをたくさんサポートしてゐる。Maple V release 4 で供給される標準的なパッケージセットの函數がユーザーの判斷によつて强調される。ユーザーは .vimrc に以下を書くと、全てのパッケージ函數がハイライトされる:

:let mvpkg_all= 1

あるいは以下の表から任意のサブセット變數/パッケージを選んで .vimrc ファイル中でその變數を 1 にセットしてもよい ($VIMRUNTIME/syntax/syntax.vim を讀み込む前に行ふ必要がある)。

Maple V パッケージ函數選擇肢の表

mv_DEtoolsmv_genfuncmv_networksmv_process
mv_Galoismv_geometrymv_numapproxmv_simplex
mv_GaussIntmv_grobnermv_numtheorymv_stats
mv_LREtoolsmv_groupmv_orthopolymv_student
mv_combinatmv_inttransmv_padicmv_sumtools
mv_combstructmv_liesymmmv_plotsmv_tensor
mv_difformsmv_linalgmv_plottoolsmv_totorder
mv_financemv_logicmv_powseries

MATHEMATICA

次を .vimrc に書いておかないかぎり、空の *.m ファイルは自動的に Matlab のファイルであるとみなされる:

let filetype_m = "mma"

MOO

式の中で C スタイルのコメントを使つてゐて、それがハイライトを亂してゐる場合は、C スタイル用の擴張マッチ (これは遲い!) を使ふことができる:

:let moo_extended_cstyle_comments = 1

文字列中の代名詞置換パターンのハイライトを無效化させるには:

:let moo_no_pronoun_sub = 1

正規表現演算子 ’%l’ のハイライトと文字列中の ’%(’ と ’%)’ のマッチを無效化させるには:

:let moo_no_regexp = 1

對應してゐないダブルクォートを認識してエラーとしてハイライトすることができる:

:let moo_unmatched_quotes = 1

組み込みプロパティ (.name, .location, .programmer など) をハイライトするには:

:let moo_builtin_properties = 1

未知の組み込み函數を認識してエラーとしてハイライトすることができる。このオプションを使ふなら、mooKnownBuiltinFunction グループに自分自身の擴張を加へること。このオプションを有效化するには:

:let moo_unknown_builtin_functions = 1

既知の組み込み函數のリストに sprintf() を加へる例:

:syn keyword mooKnownBuiltinFunction sprintf contained

MSQL

msql 構文ハイライトには2つのオプションがある。

文字列中で SQL 構文ハイライトをさせるにはかうする:

:let msql_sql_query = 1

シンクロナイズは、minlines はデフォルトで 100 になつてゐる。この値を變へるには、"msql_minlines" の望む値にすればよい。例:

:let msql_minlines = 200

N1QL

N1QL は Couchbase Server データベースで JSON 文書を操作するための SQL ライクな宣言型言語である。

Vim は N1QL ステートメント, キーワード, オペレータ, 型, コメントおよび特殊な値を構文ハイライトする。COLUMN や CHAR のやうな、N1QL に存在しない SQL 特有な構文要素やその他たくさんある方言は無視される。

NCF

NCF 構文ハイライトには 1 つのオプションがある。

ncf.vim によつて認識されない文をエラーとしてハイライトさせるにはかうする:

:let ncf_highlight_unknowns = 1

これらをエラーとしてハイライトさせたくない場合は、この變數をセットしないでおく。

NROFF

nroff 構文ファイルはそのままで AT&T n/troff に對應してゐる。構文ファイルに含まれてゐる GNU groff 擴張機能を使ふには、それを有效化する必要がある。

例へば、Linux と BSD ディストリビューションは、デフォルトではテキスト處理パッケージとして groff を使ふ。groff 用の擴張構文ハイライト機能を有效化するには、次のオプションを初期化ファイルに加へる:

:let b:nroff_is_groff = 1

groff は、Solaris でまだ使はれてゐるかもしれない古い AT&T n/troff とは異なる。groff のマクロとリクエスト名は 2 文字以上の長さであつてもよく、言語プリミティブに擴張がされてゐる。

例へば、AT&T troff ではリクエスト \(yr を使ひ、2 桁の數で年にアクセスする。groff では互換性のために同じリクエストを使ふこともできるし、または groff ネイティブの構文 ,\[yr] を使ふこともできる。

さらに、\[year] として 4 桁の年を直接使ふこともできる。マクロリクエストは 2 文字以上の長さであつてもよい。例へば、GNU mm は verbatim 環境を作るのに ".VERBON" と ".VERBOFF" といふリクエストを受けつける。

g/troff によつて得られる最良の整形された出力を得るには、スペースと句讀點に關するいくつかの單純なルールに從ふべきである。

  1. 行の末尾に空のスペースを置かないこと
  2. 文末のピリオド、エクスクラメーションマークなどの後にはちやうど 1 個のスペースを置くこと。
  3. 後述の理由により、全てのピリオドの後に改行 (carriage return) を置くとよい。

これらの妙な tips の理由は、g/n/troff が改行に、これらのルールに從はないとすぐに混亂してしまふアルゴリズムを使つてゐるためである。

troff は TeX と違ひ、段落ごとでなく行ごとにテキストを書き込む。さらに、glue や stretch の槪念を持たず、入力に水平、垂直の空白があると全てそのまま出力される。

それゆゑ、最終的なドキュメントで意圖する以上の空白を文と文の閒にはさまないやうに注意すること。この理由のため、全ての句讀點記號の後すぐに改行を入れるといふ習慣がある。最終的に處理された出力が「一樣な」テキストになつてほしければ、入力のテキストで正しくスペースを置いておく必要がある。行末の空白と句讀點の後の 2 個以上の空白をエラーとしてハイライトしたいならかうする:

:let nroff_space_errors = 1

正しい活字組みと干涉するかもしれないが、餘分な空白や他のエラーを檢出するもう 1 つの方法は、設定ファイル中で構文グループ "nroffDefinition" と "nroffDefSpecial" に目立つハイライト定義を定義することである。例:

hi def nroffDefinition term=italic cterm=italic gui=reverse
hi def nroffDefSpecial term=italic,bold cterm=italic,bold
                       \ gui=reverse,bold

ソースファイル中のプリプロセッサーのエントリをセクションマーカーと同じくらゐ容易に表示させたいなら、.vimrc 中で次のオプションを有效化する:

let b:preprocs_as_sections = 1

同樣に、構文ファイルは ms パッケージ中の擴張段落マクロ (.XP) 用の餘分な段落マーカーも含んでゐる。

最後に、構文ファイル |groff.vim| が存在する。これはデフォルトで file basis とグローバルの兩方で groff 構文ハイライトすることができる。

OCAML

OCaml 構文ファイルは以下の擴張子を持つファイルに對應してゐる: .ml, .mli, .mll と .mly。以下の變數をセットすると:

:let ocaml_revised = 1

標準的 OCaml 構文から camlp4 プリプロセッサーでサポートされてゐる修正構文に切り替へることができる。以下の變數をセットすると:

:let ocaml_noend_error = 1

"end" をエラーとしてハイライトするのをやめることができる。これは Vim がシンクロナイズできないほど長い構造を含むソースのとき便利である。

PAPP

PApp 構文ファイルは .papp ファイルと、その小さな擴張、トップレベルのファイルフォーマットとして xml を用いた perl/xml/html/その他 の混合である .pxml, .pxsl ファイルを扱ふ。デフォルトでは、phtml や pxml セクションの內側の全ては埋め込みプリプロセッサーコマンドつきの文字列として扱はれる。次の變數を初期化ファイルで設定すると:

:let papp_include_html=1

phtml セクションの內側の html コードを構文ハイライトしようとする。しかしこれは比較的遲く、實用的に編輯するにはカラフルすぎる。

構文ファイル papp.vim の最新版は、通常以下で得られる。

http://papp.plan9.de

PASCAL

"*.p" にマッチするファイルのタイプは Progress か Pascal である。自動判別が機能しないなら、または Progress ファイルを一切編輯しないとわかつてゐるなら、これを vimrc ファイルに書くといい:

:let filetype_p = "pascal"

Pascal 構文ファイルは Turbo Pascal, Free Pascal Compiler と GNU Pascal Compiler で提供される擴張に對應するための擴張が施されてきた。Delphi のキーワードもサポートされてゐる。デフォルトでは Turbo Pascal 7.0 の機能が有效化されてゐる。標準的な Pascal のキーワードだけを使ひたいなら、次の行を初期化ファイルに加へること:

:let pascal_traditional=1

Delphi 固有の構文 (1 行コメント、キーワード等) を有效化したいなら:

:let pascal_delphi=1

オプション pascal_symbol_operator は、+, * などのやうな演算子記號を Operator の色を使つて表示するどうかを制禦する。演算子記號を色づけするには、次の行を初期化ファイルに加へること:

:let pascal_symbol_operator=1

いくつかの函數はデフォルトでハイライトされる。これをオフにするには:

:let pascal_no_functions=1

さらに、いくつかのコンパイラ用に個別の變數がある。pascal_delphi, pascal_gpc, pascal_fpc がある。デフォルトの擴張は Turbo Pascal に合ふやうになつてゐる。

:let pascal_gpc=1

または

:let pascal_fpc=1

文字列が 1 行で定義されるものとするなら、變數 pascal_one_line_string variable を定義するとよい。

:let pascal_one_line_string=1

タブ文字が好きでないなら、變數 pascal_no_tabs をセットするとよい。するとタブがエラーとしてハイライトされる。

:let pascal_no_tabs=1

PERL

perl 用の構文ハイライトにはたくさんのオプションがある。

インライン POD 强調表示は初期設定で有效化される。Perl ファイル內に埋め込まれた POD を强調表示して複雜にしたくない場合は、’perl_include_pod’ オプションを 0 に設定する:

:let perl_include_pod = 0

パースの複雜さを輕減するために (そしてパフォーマンスを上げるために)、變數名と內容のパースにおける 2 つの要素をオフにすることができる。

變數名と函數名中のパッケージ參照 (’$PkgName::VarName’ 中の ’PkgName::’ のやうな) を他の名前と區別しないやうにするには次のやうにする:

:let perl_no_scope_in_variables = 1

(Vim 6.x では違ふ方法だつた: "perl_want_scope_in_variables" を設定するとこの機能が有效になつた)

’@{${"foo"}}’ のやうに複雜なものをパースさせたくないなら次のやうにする:

:let perl_no_extended_vars = 1

(Vim 6.x では違ふ方法だつた: "perl_extended_vars" を設定するとこの機能が有效になつた)

文字列の色づけは變更できる。デフォルトでは文字列と qq friends は第 1 行と同じやうにハイライトされる。變數 perl_string_as_statement をセットすると第2行のやうにハイライトされる。

   "hello world!"; qq|hello world|;
   ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N       (unlet perl_string_as_statement)
   S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN       (let perl_string_as_statement)

(^ = perlString, S = perlStatement, N = None at all)

シンクロナイズには 3 つのオプションがある。最初の 2 つは、シンクロナイズのトリガーの一部をオフにするもので、ハイライトが適切に機能しないときのみ必要になる。スクロール中に突然スクリーン全體の色がすつかり變はつてしまつたらこれらのうち 1 つをオフにしてみること。その誤りを引き起こした行を特定できるなら、それを知らせてください。

1 つのトリガーは "^\s*sub\s*" に關するもので、もう 1 つはほぼ "^[$@%]" に關するものである。

:let perl_no_sync_on_sub
:let perl_no_sync_on_global_var

以下のやうにして、どこから構文ハイライトを始めるかの最大距離を設定できる:

:let perl_sync_dist = 100

perl で折りたたみを使ひたいなら perl_fold をセットすること:

:let perl_fold = 1

if 文などでも同樣にブロックを折り疊みたければ、次のやうに設定する:

:let perl_fold_blocks = 1

初期設定では ’perl_fold’ が設定されてゐればサブルーチンの折り疊みは有效化される。無效化したい場合は ’perl_nofold_subs’ を設定する:

:let perl_nofold_subs = 1

初期設定では無名サブルーチンは折り疊まれない。折り疊みを有效化するには ’perl_fold_anonymous_subs’ を設定する:

:let perl_fold_anonymous_subs = 1

初期設定では ’perl_fold’ が設定されてゐればパッケージは折り疊まれる。無效化したい場合は ’perl_nofold_packages’ を設定する:

:let perl_nofold_packages = 1

PHP3 and PHP4

Note:
これは以前は "php3" と呼ばれてゐた。しかし現在は php4 もサポートしてゐるので "php" と名前が變更された。

php 用の構文ハイライトには以下のオプションがある。

文字列中で SQL 構文ハイライトを行ひたいなら:

let php_sql_query = 1

Baselib メソッドのハイライトを行ひたいなら:

let php_baselib = 1

文字列中で HTML 構文ハイライトを行ひたいなら:

let php_htmlInStrings = 1

古いカラースタイルを使ひたいなら:

let php_oldStyle = 1

ASP スタイルのショートタグを有效化したいなら:

let php_asp_tags = 1

ショートタグを無效化したいなら:

let php_noShortTags = 1

] や ) の對應エラーをハイライトしたいなら:

let php_parent_error_close = 1

對應する閉ぢ括弧がない開き括弧 ( や [ が存在する場合、php 終了タグをスキップさせたいなら:

let php_parent_error_open = 1

クラスや函數の折り疊みを有效化するには:

let php_folding = 1

シンクロナイズ方法を選ぶには:

let php_sync_method = x
x = -1で檢索によるシンクロナイズ(デフォルト)
x > 0少なくともx行上までシンクロナイズ
x = 0最初からシンクロナイズ

PLAINTEX

TeX とは組版言語であり、plaintex は「素の」TeX に對して使はれるファイルタイプである。*.tex ファイルを決して素の TeX と認識してほしくないならば |ft-tex-plugin| を參照。

この構文ファイルは次のオプションを持つ

let g:plaintex_delimiters = 1

角括弧 "[]" と波括弧 "{}" をハイライトさせるには上の變數を設定する。

PPWIZARD

PPWizard は HTML とOS/2 INF ファイル用のプリプロセッサーである。

構文ファイルは以下のオプションを持つ:

PHTML

phtml 用の構文ハイライトには 2 つのオプションがある。

文字列中で SQL 構文ハイライトをさせたいならかうする:

:let phtml_sql_query = 1

シンクロナイズについては、minlines のデフォルトは 100 になつてゐる。他の値にしたいなら "phtml_minlines" を望む値にセットすればよい。例:

:let phtml_minlines = 200

POSTSCRIPT

PostScript 用の構文ハイライトにはいくつかのオプションがある。

まづ、どのバージョンの PostScript 言語をハイライトするかである。現在のところ、言語の 3 つのバージョン、あるいはレベルが定義されてゐる。レベル1はオリジナルの基本バージョンで、レベル 2 のリリース以前のすべての擴張を含んでゐる。レベル 2 はもつとも一般的なバージョンで、レベル 3 リリース以前のすべての擴張を含んでゐる。レベル 3 は現在のところサポートされてゐる中でもつともレベルが高い。次のやうに變數 postscr_level を定義することによつて、PostScript 言語のどのレベルをハイライトするか選ぶことができる:

:let postscr_level=2

この變數が定義されてゐないときはデフォルトの 2 (レベル 2)になる。これが現在のところもつとも普及してゐるためである。

Note:
すべての PS インタープリターがその言語レベルのすべての言語機能をサポートしてゐるわけではないことに注意。とくに、PS ファイルの先頭の %!PS-Adobe-3.0は 現在の PostScript がレベル 3 であることを示すわけではない!

以下のやうに變數 postscr_display を定義すると、Display PostScript の言語機能もハイライトさせることができる:

:let postscr_display=1

以下のやうに變數 postscr_ghostscript を定義すると、Ghostscript 固有の言語機能もハイライトさせることができる:

:let postscr_ghostscript=1

PostScript はたくさんの定義濟み要素を持つ巨大な言語である。これらの要素すべてをハイライトすると便利であるが、さうすると遲いマシンでは Vim の動作が遲くなつてしまふ。マシンフレンドリーにするために、デフォルトではフォント名と文字エンコーディングはハイライトされない、これらをハイライトさせるには、以下の變數のどちらかまたは兩方をセットすること:

:let postscr_fonts=1
:let postscr_encodings=1

and, or, not のハイライトについて、スタイル上のオプションが存在する。PostScript では、これらの演算子の機能はオペランドの型に依存する。オペランドが兩方ブール型なら論理演算子となり、兩方整數型なら 2 項演算子となる。2 項演算子と論理演算子を區別してハイライトすることができるので、どちらにしてもこれらはハイライトされなければならない。デフォルトではどちらも論理演算子としてハイライトされる。變數 postscr_andornot_binary を定義すると、どちらも 2 項演算子としてハイライトされる:

:let postscr_andornot_binary=1

PRINTCAP + TERMCAP

この構文ファイルは printcap と termcap データベースに適用される。

*printcap* または *termcap* といふパターンにマッチしない printcap/termcap ファイルを認識させるためには、ファイル |myfiletypefile| において、あなたのシステムに合つたパターンを追加しなければならない。これらのパターンには、變數 "b:ptcap_type" を "print" か "term" のどちらかにセットしなければならない。するとオプション ’filetype’ の値が ptcap になる。

例へば、/etc/termcaps/ 以下の全てのファイルを termcap ファイルと識別させるやうにするには次を書き加へる:

:au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" |
                                    \ set filetype=ptcap

上方向にスクロールしてゐるときハイライトがをかしくなり、それが CTRL-L で再描畫すると直るやうなら、變數 "ptcap_minlines" の値を大きくしてみるとよい:

:let ptcap_minlines = 50

(デフォルトは 20 行)

PROGRESS

"*.w" にマッチするファイルのタイプは Progress か CWEB である。自動判別がうまく機能しないなら、または cweb ファイルを一切編輯しないとわかつてゐるなら、次を vimrc に加へるとよい:

:let filetype_w = "progress"

同じことが "*.i" (アセンブリでもありうる) と "*.p" (Pascal でもありうる) にもいえる。アセンブリと Pascal を使はないとわかつてゐるならこれを使ふこと:

:let filetype_i = "progress"
:let filetype_p = "progress"

PYTHON

Python 構文ハイライトをコントロールするオプションは 6 つある。

數字のハイライト:

:let python_no_number_highlight = 1

組み込み函數のハイライト:

:let python_no_builtin_highlight = 1

標準例外のハイライト:

:let python_no_exception_highlight = 1

doctest とその中のコードのハイライト:

:let python_no_doctest_highlight = 1

または

:let python_no_doctest_code_highlight = 1

(最初のオプションは 2 番目のオプションも含む)。

行末の空白と、スペースとタブの混在のハイライト:

:let python_space_error_highlight = 1

全てのハイライトを有效化させるには (最後に擧げたオプションを有效化し、他のオプションを無效化するのと同じ):

:let python_highlight_all = 1

Note:
變數が定義されてゐるかどうかが意味を持つ。値は關係ない。設定値は 1 以外でも構はない。

QUAKE

Quake 構文定義は Quake エンジンのどれかに基づくほとんど全ての FPS (First Person Shooter) 用に對應するはずである。しかし 3 つのゲーム (Quake, Quake 2, Quake 3 Arena) 閒でコマンド名が少々異なる。そのため、3 つのグローバル變數により、どのコマンドが有效であるか指定できるやうになつてゐる。3 つの變數には次のやうな效果がある:

Quake でのみ利用可能なコマンドをハイライトするやうに設定:

:let quake_is_quake1 = 1

Quake 2 でのみ利用可能なコマンドをハイライトするやうに設定:

:let quake_is_quake2 = 1

Quake 3 Arena でのみ利用可能なコマンドをハイライトするやうに設定:

:let quake_is_quake3 = 1

これら 3 つのコマンドを自由に組み合はせることができる。しかしゲームで利用できないコマンドもハイライトしてしまふかもしれない。

R

シンタックスハイライトのために R のコードをパースするのに 40 行戾るが、自身の |vimrc| に別の値を設定することができます。例へば:

let r_syntax_minlines = 60

ROxygen のシンタックスハイライトをオフにすることもできます:

let r_syntax_hl_roxygen = 0

丸括弧、角括弧、波括弧によるコードの折り疊みを有效にするには:

let r_syntax_folding = 1

そして、開き括弧以降のすべてのキーワードを函數としてハイライトするには:

let r_syntax_fun_pattern = 1

R MARKDOWN

YAML ヘッダーのシンタックスハイライトを無效にするには |vimrc| に次を追加します:

let rmd_syn_hl_yaml = 0

引用キーのシンタックスハイライトを無效にするには |vimrc| に次を追加します:

let rmd_syn_hl_citations = 0

knitr チャンクヘッダーの R コードをハイライトするには |vimrc| に次を追加します:

let rmd_syn_hl_chunk = 1

デフォルトでは、R コードのチャンクは R 言語のルールに則つてハイライトされるでせう。もしも他言語のチャンクを本來のシンタックスハイライトにしたいなら、それらを ‘markdown_fenced_languages‘ か ‘rmd_fenced_languages‘ に追加するべきでせう。例へば、R と Pyhton のどちらも正しくハイライトするには、|vimrc| に次を追加できるでせう:

let rmd_fenced_languages = ['r', 'python']

R RESTRUCTURED TEXT

knitr チャンクヘッダーの R コードをハイライトするには、|vimrc| に次を追加します:

let rrst_syn_hl_chunk = 1

READLINE

readline ライブラリは主として BASH シェルで使はれ、BASH はかなりの數のコマンドとオプションを追加してゐる。これらの項目を同樣にハイライトするには次を |vimrc| に加へるか、readline 構文ファイルを讀み込む前にこれをタイプすればよい:

let readline_has_bash = 1

かうすると BASH (バージョン 2.05a 以降。一部それ以前) が追加するコマンドもハイライトするやうになる。

RESTRUCTURED TEXT

選擇したファイルタイプの數について、文書內のコードブロックに對して構文ハイライトが有效になる。デフォルトの構文リストについては、$VIMRUNTIME/syntax/rst.vim を參照。

ユーザー定義のコードブロック構文ハイライトの一覽を設定するには:

let rst_syntax_code_list = ['vim', 'lisp', ...]

複數のコードブロックタイプを單一の構文に割り當てるには、マッピングとして

let rst_syntax_code_list = {
        \ 'cpp' = ['cpp', 'c++'],
        \ 'bash' = ['bash', 'sh'],
        ...
}

强調テキストにカラーハイライトを使用するには:

let rst_use_emphasis_colors = 1

セクションの折りたたみを有效にするには:

let rst_fold_enabled = 1

Note:
一部のプラットフォームでは、折りたたみによつてパフォーマンスの問題が發生する可能性があることに注意。

REXX

上方向にスクロールしてゐるときにハイライトがをかしくなり、それが CTRL-L で再描畫すると直るやうなら、變數 "rexx_minlines" の値を大きくしてみるとよい:

:let rexx_minlines = 50

かうすると構文シンクロナイズが畫面最上行の 50 行前から始まるやうになる。値を大きくすることの缺點は、再描畫が遲くなることである。

Vim は ".r" ファイルのタイプを推測しようとする。(コメント行から) タイプを特定できなかつた場合、デフォルトは "r" である。デフォルトを rexx にするには次の行を .vimrc に追加すること:

:let g:filetype_r = "r"

RUBY

Ruby: 演算子のハイライト|ruby_operators|
Ruby: ホワイトスペース エラー|ruby_space_errors|
Ruby: 折り疊み|ruby_fold| |ruby_foldable_groups|
Ruby: 負荷の高い處理の削減|ruby_no_expensive| |ruby_minlines|
Ruby: スペルチェック|ruby_spellcheck_strings|

Ruby: 演算子のハイライト

"ruby_operators" を定義すると、演算子をハイライトできる:

:let ruby_operators = 1

Ruby: ホワイトスペース エラー

"ruby_space_errors" を定義すると、ホワイトスペースのエラーをハイライトできる:

:let ruby_space_errors = 1

これは、行末のホワイトスペースとスペース文字に續くタブ文字をエラーとしてハイライトする。"ruby_no_trail_space_error" と "ruby_no_tab_space_error" の定義により、行末のホワイトスペースやスペース文字直後のタブ文字を無視するやう個別に制禦できる。

Ruby: 折り疊み

"ruby_fold" を定義すると、折り疊みを有效化できる:

:let ruby_fold = 1

これは、’foldmethod’ の値として "syntax" を現在のバッファまたはウィンドウに限定で設定し、Ruby ファイルの編輯時に、構文に基づく折り疊みを有效にする。

デフォルトの折り疊みはある程度、精密である。すなはち、"if", "do", "%w[]" などの小さな構文ユニットは、對應する折り疊みレベルを構成する。

"ruby_foldable_groups" をセットすることで、折り疊み可能なグループを制限できる:

:let ruby_foldable_groups = 'if case %'

値は、キーワードのリストをスペース文字區切りで指定:

キーワード意味
ALL大部分のブロック構文 (デフォルト)
NONEなし
if"if" or "unless" ブロック
def"def" ブロック
class"class" ブロック
module"module" ブロック
do"do" ブロック
begin"begin" ブロック
case"case" ブロック
for"for", "while", "until" ループ
{波カッコ ブロック、またはハッシュ リテラル
[排列リテラル
%"%" 記法によるリテラル。 例: %w(STRING), %!STRING!
/正規表現
string文字列とシェルコマンドの出力 (’, ", ‘ でくくられた)
:シンボル
#複數行コメント
<<ヒアドキュメント
__END__"__END__" ディレクティブ以降のソースコード

Ruby: 負荷の高い處理の削減

デフォルトではキーワード "end" はそれに對應するブロック開始文にしたがつて色づけされる。この機能は便利だが、コストがかかる。再描畫が遲くなつたら (または色機能の貧弱なターミナルを使つてゐるなら) 變數 "ruby_no_expensive" を定義することによつてこの機能をオフにできる:

:let ruby_no_expensive = 1

この場合すべての制禦キーワードに同じ色が使はれる。

この機能を有效化したいが、上にスクロールしてゐるときにハイライトがをかしくなり、それが CTRL-L で再描畫すると直るやうなら、變數 "ruby_minlines" を 50 以上の値にセットしてみるとよい:

:let ruby_minlines = 100

理想的には、ファイル中の最も行數の多いクラスやモジュールをカバーできるほどの十分な行數を値として設定するべき。

Ruby: スペルチェック

"ruby_spellcheck_strings" を定義すると、Ruby シンタックスはスペルチェックを行ふ:

:let ruby_spellcheck_strings = 1

SCHEME

デフォルトでは R7RS のキーワードだけをハイライトし、正しくインデントする。

scheme.vim は CHICKEN Scheme->C コンパイラの擴張子にも對應してゐる。それを有效にするには b:is_chicken または g:is_chicken を定義する。

SDL

SDL 用のハイライトにはいくつかのキーワードが拔けてゐるかもしれない。しかし SDL にはたくさんのキーワードがあるので、すべてに對應することはほとんど不可能である。

新しい標準 SDL-2000 ではすべての識別子の大文字・小文字が區別される (以前はさうではなかつた)。また、すべてのキーワードが全部大文字または全部小文字であつてもよい。構文ハイライトにこれを反映させるには次の變數をセットすればよい:

:let sdl_2000=1

これはたくさんの新しいキーワードもセットする。古いキーワードを無效にするには (これはよい考へである)かうする:

:let SDL_no_96=1

インデントもおそらく不完全であるが、今のところ私はこれでとても滿足してゐる。

SED

タブをハイライトして通常の空白と區別しやすくするには、次の行を vimrc に書いて "highlight_sedtabs" を定義する (TODO と同じ構文グループが使はれる)

:let highlight_sedtabs = 1

(タブのハイライトは、檢索パターン、置換テキスト、アドレス、Append/Change/Insert コマンドに含まれるテキストいづれかの中のタブにだけ適用される)。このオプションを有效化するなら、タブ幅を 1 文字にするとよい。さうすると文字列中のタブの數を數えやすくなる。

バグ:

變換コマンド (y) は置換コマンドとまつたく同樣に扱はれる。つまり、この構文ファイルにおいては、變換は置換と同じフラグを受け取ると判斷される。これは閒違ひである (變換は一切フラグを受け取らない)。これに關係したコマンドは非常に複雜な處理を要求するため (95 パターン、もつともらしいパターンデリミタごとに 1 つ)、私はこのバグを容認してゐる。

SGML

SGML ファイル中のタグをハイライトする方法は以下のやうに動作する。

開きタグ <> と閉ぢタグ </> は異なる色がつけられる。これは意圖されたものである。開きタグには ’Function’ の色が使はれ、閉ぢタグには ’Type’ の色が使はれる (これらがどう定義されてゐるかを確かめたいなら syntax.vim を見ること)。

登錄されてゐるタグ名は C の文と同じ方法で色づけされる。エラーを見つけやすくするため、登錄されてゐないタグ名は色づけされない。

Note:
引數名 (や屬性名) も同樣である。登錄されてゐる屬性名は登錄されてゐない屬性名と異なる色がつけられる。

いくつかの SGML タグはテキストの外見を變更するのに使はれる。以下のタグは構文ファイル sgml.vim によつて認識され、通常のテキストの表示法を變更する:

<varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> <link>。

そのテキストの表示法を變へたいなら以下の構文グループを再定義しなければならない:

この再定義を機能させるにはこれらすべてを再定義し、以下の變數を vimrc 中で定義しなければならない (初期化の際にファイルが讀み込まれる順序のため)

let sgml_my_rendering=1

この表示法を無效にしたければ次の行を vimrc に加へる:

let sgml_no_rendering=1

(Claudio Fleiner <claudio@fleiner.com> による html.vim のヘルプテキストから一部借用した)

SH

これは、古い UNIX (Bourne) sh と bash や dash, POSIX, Korn シェルのやうな新しい UNIX シェルの構文ハイライトをカバーする。

Vim は樣々なファイル名がどのタイプであるかを指定することによつて、どのシェルが使はれてゐるかを決定しようとする。例:

ksh:.kshrc* *.ksh
bash:.bashrc* bashrc bash.bashrc .bash_profile* *.bash

パターンリストのすべては $VIMRUNTIME/filetype.vim を參照。これらのうちどれにも當てはまらなければ、ファイルの第一行によつて判斷される (例. /bin/sh /bin/ksh /bin/bash を探す)。第一行でシェルを指定されてゐれば、そのシェルが使用される。しかしいくつかのファイル (例. .profile) はシェルファイルであることはわかつてゐても、どのタイプか明らかではない。さらに、多くのシステムで sh は "bash" (Linux, Windows+cygwin) や "ksh" (Posix) へのシンボリックリンクになつてゐる。

以下の變數のどれかを .vimrc で定義することにより、デフォルトを設定することができる:

ksh:

let g:is_kornshell = 1

posix: (これは g:is_kornshell に 1 を設定することとほぼ同じ)

let g:is_posix = 1

bash:

let g:is_bash = 1

sh: (デフォルト) Bourne shell

let g:is_sh = 1

(dash 使用者は posix を使用するべき)

"#! ..." といふ行がなく、かつユーザーが上の方法でデフォルトの sh.vim の構文を設定してゐない場合、sh.vim は Bourne シェルの構文であると假定する。エラーレポートで RFC や市場滲透統計を引用する必要はありません。ただただ、デフォルトでシステムに使用されるバージョンのシェルを選擇し、それに對應する "let..." をあなたの .vimrc に導入してください。

syntax/sh.vim は構文ベースの折り疊みを數種類用意してゐる:

let g:sh_fold_enabled= 0(デフォルト。構文折り疊みなし)
let g:sh_fold_enabled= 1(函數の折り疊みを有效化)
let g:sh_fold_enabled= 2(ヒアドキュメントの折り疊みを有效化)
let g:sh_fold_enabled= 4(if/do/for の折り疊みを有效化)

樣々な構文要素 (例: ヒアドキュメントと函數の中身) が syntax メソッドによつて折り疊み可能になる (|:syn-fold|)。これらのうち複數を組み合はせることもできる:

let g:sh_fold_enabled= 3     (函數とヒアドキュメントの折疊を有效化)

上方向にスクロールしてゐるときにハイライトがをかしくなり、それが CTRL-L で再描畫すると直るやうなら、變數 "sh_minlines" の値を大きくしてみるとよい。例:

let sh_minlines = 500

かうすると構文シンクロナイズが畫面最上行の 500 行前から始まるやうになる。デフォルトの値は 200 である。大きい値を設定することの缺點は、動作が遲くなるかもしれないことである。

シンクロナイズさせるものがあまりないときは表示がとても遲くなるかもしれない。これを減らすために、變數 "sh_maxlines" をセットすることができる。例:

let sh_maxlines = 100

デフォルトは sh_minlines の 2 倍の値が使はれる。表示を高速化するにはこれをもつと小さい値にすること。缺點はハイライト閒違ひが出るかもしれないことである。

syntax/sh.vim は特定のプログラムをエラーとして表示しようとする。通常は、餘分な ’]’, ’done’, ’fi’ などがこれに當たる。もしもこのエラーの扱ひがあなたの目的で問題を起こす場合は、.vimrc に以下を書くことでエラーの强調表示を抑制できる:

let g:sh_no_error= 1

Sh: 埋め込み言語

sh に言語を埋め込みたい場合。Lorance Stinson が awk を埋め込む例を出してくれたのでそれを載せる。以下のファイルを $HOME/.vim/after/syntax/sh/awkembed.vim に置くこと:

" AWK Embedding:
" ==============
" Shamelessly ripped from aspperl.vim by Aaron Hope.
if exists("b:current_syntax")
  unlet b:current_syntax
endif
syn include @AWKScript syntax/awk.vim
syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained
syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode
syn cluster shCommandSubList add=AWKScriptEmbedded
hi def link AWKCommand Type

この例では次のやうなシングルクォートで圍まれた awk コードが awk 言語として强調表示されるやうになる:

awk '...awk code here...'

これは他の言語にも應用できる。

SPEEDUP

(AspenTech plant simulator)

Speedup 構文ファイルにはいくつかのオプションがある:

變數の PRESET により、OPERATION セクションはとても大きくなりがちであり、そのためシンクロナイズが追ひつかなくなるかもしれない。あなたのコンピュータが十分速いなら構文ファイルの最後近くで minlines と maxlines の値を大きくするとよいかもしれない。

SQL

SQL には ANSI 標準があるのだが、ほとんどのデータベースエンジンは獨自の擴張を追加してゐる。現在のところ、Vim は Oracle と Informix の SQL 方言をサポートしてゐる。デフォルトでは Vim は "*.sql" のファイルを Oracle SQL であると判斷する。

現在のところ、Vim は構文スクリプトによつて、樣々なベンダーの SQL に對應してゐる。デフォルト設定を Oracle から他の對應してゐる SQL に變更することができる。また、バッファごとに使ふ SQL の方言を變へることも簡單にできる。

より詳しい說明は |ft_sql.txt| を參照。

TCSH

これは "tcsh" といふ名前のシェルをカバーしてゐる。これは csh のスーパーセットである。ファイル形式がどのやうに判定されるかは |csh.vim| を參照。

tcsh はシェル變數 backslash_quote をセットしてゐない限り文字列中に \" が現れることを許さない。Vim にバックスラッシュクォート構文が存在しないと判斷させたいなら、次の行を .vimrc に加へること:

:let tcsh_backslash_quote = 0

上方向にスクロールしてゐるときにハイライトがをかしくなり、それが CTRL-L で再描畫すると直るやうなら、變數 tcsh_minlines の値を大きくしてみるとよい:

:let tcsh_minlines = 1000

かうすると構文シンクロナイズが畫面最上行の 1000 行前から始まるやうになる。tcsh_minlines に "fromstart" をセットすると、ファイルの先頭からシンクロナイズが行はれるやうになる。tcsh_minlines の既定値は 100。大きな値にすることの缺點は、再描畫が遲くなることである。

TEX

Tex 目次

Tex: 構文折り疊みをするには|tex-folding|
Tex: スペルチェックを行ひたくない場合|g:tex_nospell|
Tex: コメントの中ではスペルチェックを行ひたくない場合|tex-nospell|
Tex: Verbatim ゾーンをスペルチェックするには|tex-verb|
Tex: コメントや MathZone の區切り|tex-runon|
Tex: 構文ハイライトが遲いならば|tex-slow|
Tex: もつとコマンドをハイライトさせるには|tex-morecommands|
Tex: エラーのハイライトが行き過ぎならば|tex-error|
Tex: 新しいMathグループが必要ならば|tex-math|
Tex: 新しいスタイルを始めるには|tex-style|
Tex: Conceal モードを活用する|tex-conceal|
Tex: Conceal モードの選擇|g:tex_conceal|
Tex: iskeyword を制禦する|g:tex_isk|
Tex: 下付き記號と上付き記號を制禦する|tex-supersub|

構文折り疊みをするには

<syntax/tex.vim> のバージョン28以降では、構文による部分、章、節、小節などの折り疊みに對應してゐる。それを有效にするには次の行を <.vimrc> に書き、

let g:tex_fold_enabled=1

:set fdm=syntax とする。後者を LaTeX ファイルの末尾にモードラインとして書いておくといいかもしれない:

% vim: fdm=syntax

これによつてシステムが遲くなり過ぎる場合は次のリンクを參照すること

https://vimhelp.org/vim_faq.txt.html#faq-29.7

Tex: スペルチェックを行ひたくない場合

LaTeX 文章でどこにもスペルチェックを行はせたくない場合は、

let g:tex_nospell=1

.vimrc に書けばよい。ただ單にコメント內だけでスペルチェックを抑制したい場合は、|g:tex_comment_nospell| を參照せよ。

Tex: コメントの中ではスペルチェックを行ひたくない場合

LaTeX ファイルのコメントの中にソースコードのやうなものを含めることがあるので、コメントの中ではスペルチェックを無效にしたいといふ人もゐる。そのやうにするには次の行を .vimrc に加へる:

let g:tex_comment_nospell= 1

LaTeX 文章中のどこででもスペルチェックを抑制したい場合は、|g:tex_nospell| を參照せよ。

Tex: Verbatim ゾーンをスペルチェックするには

たいてい verbatim リージョンはソースコードのやうなものを書くのに使はれる。ソースコードをスペルチェックしたいと思ふことはほとんどないだらう。とはいへ、もし verbatim ゾーンの內容をスペルチェックしたいときは <.vimrc> で次のやうに設定すること:

let g:tex_verbspell= 1

Tex: コメントや MathZone の區切り

<syntax/tex.vim> の構文ハイライトは TeX, LaTeX, AmsTeX をサポートしてゐる。normal, texZone, texMathZone の 3 つの主な區閒・範圍がサポートされてゐる。これらの區閒を適切に區切るやうかなりの努力がされたが、$..$ と $$..$$ で線引きされる區閒は開始・終了のパターンとまつたく同じにシンクロナイズさせることはできない。その結果、特別な "TeX comment" が提供されてゐる。

%stopzone

このコメントがあると、ここで强制的に texZone または texMathZone のハイライトを終はらせる。

Tex: 構文ハイライトが遲いならば

遲いコンピュータを使つてゐるなら、これらの値を減らすとよいかもしれない

:syn sync maxlines=200
:syn sync minlines=50

(特に後者を)。速いコンピュータを使つてゐるならこれらの値を增やしてもよい。これらは第一にシンクロナイズ (つまり、畫面最上行のテキストがどのグループに入るか) に影響を與へる。

構文による折り疊みによつて遲くなる場合もある。囘避方法については |tex-folding| を參照のこと。

最後に、もし構文强調表示がまだ遲い場合は、.vimrc で次のやうに設定するとよい。

:let g:tex_fast= ""

g:tex_fast 變數を設定すると、構文强調表示でリージョンや同期が定義されなくなる。それによつて構文强調表示が速くなる。ただし、豐富な强調表示、構文ベースの折り疊み、構文ベースのエラーチェックはできなくなる。

特定の構文のみを有效化することもできる。次の一覽の中から有效化したい構文强調表示を選ぶことができる:

bボールド、イタリックを許可
ctexComment を許可
mtexMatcher を許可 (例: {...} と [...])
MtexMath を許可
p部 (parts)、章 (chapter)、節 (section) などを許可
rtexRefZone を許可 (nocite, bibliography, label, pageref, eqref)
ssuperscript/subscript リージョンを許可
StexStyle を許可
vverbatim を許可
VtexNewEnv と texNewCmd を許可

例へば、let g:tex_fast= "M" は 數學關聯の强調表示を有效化する。他のリージョンベースの構文强調表示は有效化されない。(|g:tex_conceal| と |tex-supersub| も參照)

Tex: もつとコマンドをハイライトさせるには

LaTeX はプログラミング言語であり、特殊化された LaTeX のコマンド、構文、フォントがつまつたパッケージがたくさんある。そのやうなパッケージを使つてゐる人は、標準の syntax/tex.vim にそのパッケージを對應させてほしいと思ふだらう。しかしそれは明らかに非現實的である。そこで、|mysyntaxfile-add| で使はれてゐるテクニックを使つて、syntax/tex.vim で提供されてゐるハイライトを擴張・修正してみてください。擴張 (典型的には $HOME/after/syntax/tex/[pkgname].vim に置いて使ふ) を書いたら、それを http://vim.sf.net/ にアップロードすることを檢討してみてください。

私は自身のウェブサイトで、多數のポピュラーなパッケージのために、いくつかのサポートを含めてきました:

http://www.drchip.org/astronaut/vim/index.html#LATEXPKGS

シンタックスファイルは .../after/syntax/tex/ ディレクトリにあります。

Tex: エラーのハイライトが行き過ぎならば

<tex.vim> は樣々な種類のレキシカルエラーチェックをサポートしてゐる。すなはち、エラーチェックはとても便利だが、實際にはエラーでない箇所もエラーと示すかもしれない。それが嫌なら、次の行を <.vimrc> に置くとよい:

let g:tex_no_error=1

すると <syntax/tex.vim> によるすべてのエラーチェックが行はれなくなる。

Tex: 新しい Math グループが必要ならば

新しい math グループを LaTeX に含めるには、以下のコードがその例となるだらう:

call TexNewMathZone(sfx,mathzone,starform)

新しい math グループに一意な接尾辭をつけたいと思ふだらう (現在のところ、A から L までと V から Z までは <syntax/tex.vim> 自身によつて取得されてゐる)。例として、<syntax/tex.vim> で eqnarray がどのやうに設定されてゐるかを見てみよう:

call TexNewMathZone("D","eqnarray",1)

"mathzone" をあなたが作つた math グループの名前に變へる必要がある。また、それが呼ばれるやうにするために .vim/after/syntax/tex.vim に書くこと。變數 "starform" が眞ならば、あなたが作つた math グループがアスタリスクつきの形をもつことを意味する (例. eqnarray*)。

Tex: 新しいスタイルを始めるには

*.tex ファイルで "\makeatletter" を使ふ人がゐるかもしれないので、コマンド中で "@" が使へるやうになつてゐる。しかし *.tex ファイルは次の擴張子: sty cls clo dtx ltx を持たないので @ をエラーと判斷してハイライトする。これを解決するにはかうする:

:let b:tex_stylish = 1
:set ft=tex

"let g:tex_stylish=1" を <.vimrc> に書くと <syntax/tex.vim> は常にこのやうな @ の使用法を受け入れるやうになる。

Tex: Conceal モードを活用する

|'conceallevel'| が 2 に設定され、エンコーディングとして utf-8 が使はれてゐるとき、さまざまな文字シーケンスがそれに對應した utf-8 グリフとして表示される。對應してゐる文字としてはアクセント付き文字、Math ゾーンの中のギリシャ文字、Math ゾーンの中の上付き記號と下付き記號などがある。すべての上付き記號と下付き記號を表示できるわけではない。utf-8 がサポートしてゐる範圍でのみ利用可能である。實際のところ、サポートされてゐる下付き記號は少ししかない。

使用例としては、ウィンドウを垂直分割して (|CTRL-W_v| 參照)、1 つのウィンドウは |'conceallevel'| を 0 に設定してもう一方は 2 に設定し、兩方で |'scrollbind'| を設定するやうな使ひ方がある。

Tex: Conceal モードの選擇

g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示を變更できる。初期設定では、g:tex_conceal には "admgs" が設定されてをり、これによつて次の文字セットが Conceal 表示される:

a = アクセント/合字 (accents/ligatures)
b = 太字と斜體 (bold and italic)
d = 區切り記號 (delimiters)
m = 數學記號 (math symbols)
g = ギリシャ文字 (Greek)
s = 上付き記號/下付き記號 (superscripts/subscripts)

これらの文字を設定から外すことで、それに關聯した文字が Conceal 表示されなくなる。

Tex: iskeyword を制禦する

通常、LaTeX キーワードは 0-9, a-z, A-z, 192-255 のみがサポートされる。Latex キーワードはアンダースコアをサポートしない (*.sty ファイルを除く)。構文强調表示スクリプトは次の手順でそれを判斷する:

Tex: 下付き記號と上付き記號を制禦する

Conceal による文字の代替表示を有效にするには |tex-conceal| を參照。

|g:tex_conceal| を設定することでアクセント、太字/斜體、數學記號、ギリシャ文字、上付き記號/下付き記號のどれを Conceal 表示するかを選擇できる。

どの上付き記號/下付き記號を構文に基づいて Conceal 表示 (|:syn-cchar| 參照) するかを制禦できる。すべてのフォントがすべての文字をサポートしてゐるわけではないので、Conceal 表示する文字を變更できるやうになつてゐる。初期設定では次のやうに設定されてゐる:

let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]"
let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]"

例へば、私は Luxi Mono Bold を使つてゐるが、これは "hklmnpst" に對する下付き記號をサポートしてゐない。そこで私は

let g:tex_subscripts= "[0-9aeijoruvx,+-/().]"

この設定を ~/.vim/ftplugin/tex/tex.vim に書いて、utf-8 の謎グリフが表示されないやうにしてゐる。

TF

tf の構文ハイライトには 1 つのオプションがある。

シンクロナイズについて、minlines のデフォルトは 100 になつてゐる。この値を變へるには、"tf_minlines" に望みの値をセットする。例:

:let tf_minlines = your choice

VIM

正確な構文ハイライトと畫面更新速度はトレードオフの問題である。正確さを向上させるには、變數 g:vimsyn_minlines の値を大きくすればよい。g:vimsyn_maxlines も畫面更新頻度を高めるのに使へる (これについては |:syn-sync| を參照)。

g:vimsyn_minlines : シンクロナイズの最小行數を指定する
g:vimsyn_maxlines : シンクロナイズの最大行數を指定する
(g:vim_minlines と g:vim_maxlines はこれらのオプションの以前の名前である)

g:vimsyn_embed オプションは、どの外部スクリプト言語の埋め込みに對應するかを指定する。

g:vimsyn_embed == 0どのスクリプトの埋め込みも對應しない
g:vimsyn_embed =~ ’l’埋め込み lua をサポート
g:vimsyn_embed =~ ’m’埋め込み mzscheme をサポート
g:vimsyn_embed =~ ’p’埋め込み perl をサポート
g:vimsyn_embed =~ ’P’埋め込み python をサポート
g:vimsyn_embed =~ ’r’埋め込み ruby をサポート
g:vimsyn_embed =~ ’t’埋め込み tcl をサポート

初期設定では、g:vimsyn_embed には Vim がサポートしてゐる言語が設定される。複數の埋め込み言語をサポートするには、それぞれの文字を組み合はせて設定する。例、g:vimsyn_embed = "mp" なら mzscheme と perl がサポートされる。 syntax/vim.vim によつて折り疊みが可能である:

g:vimsyn_folding == 0 または
變數が存在しない
構文ベースの折り疊みはしない
g:vimsyn_folding =~ ’a’augroups
g:vimsyn_folding =~ ’f’函數を折り疊む
g:vimsyn_folding =~ ’l’lua スクリプトを折り疊む
g:vimsyn_folding =~ ’m’mzscheme スクリプトを折り疊む
g:vimsyn_folding =~ ’p’perl スクリプトを折り疊む
g:vimsyn_folding =~ ’P’python スクリプトを折り疊む
g:vimsyn_folding =~ ’r’ruby スクリプトを折り疊む
g:vimsyn_folding =~ ’t’tcl スクリプトを折り疊む

syntax/vim.vim によるエラーのハイライトは必ずしも正しいとは限らない。Vim script は正しくハイライトするのが難しい言語である。エラーのハイライトをやめるには次を |vimrc| に書けばよい:

let g:vimsyn_noerror = 1

XF86CONFIG

XF86Config ファイルの構文は XFree86 v3.x と v4.x で異なつてゐる。兩方のバージョンがサポートされてゐる。自動的に判定がされるが、完全からはほど遠い。手動でバージョンを設定する必要があるかもしれない。使用してゐる XFree86 に應じて、.vimrc 中で變數 xf86conf_xfree86_version を 3 または 4 にセットすること。例:

:let xf86conf_xfree86_version=3

複數のバージョンが混在してゐるときには、變數 b:xf86conf_xfree86_version をセットすること。

Note:
オプション名の中のスペースとアンダースコアはハイライトされない。オプション名をハイライトさせるには "__s yn con gr_e_e_n" でなく "SyncOnGreen" と書くこと。

XML

Xml 名前空閒がデフォルトでハイライトされる。次のグローバル變數をセットするとそれが無效化される:

:let g:xml_namespace_transparent=1

xml 構文ファイルを使ふと、開始タグと終了タグの閒を折りたたむ |folding| ことができる (|:syn-fold| を參照)。これをオンにするには次のやうにする。

:let g:xml_syntax_folding = 1
:set foldmethod=syntax

Note:
構文による折り疊みは、構文ハイライトを著しく遲くする可能性がある。特に巨大なファイルではさうである。

X Pixmaps (XPM)

xpm.vim は編輯中の XPM ファイルの內容から、動的に構文要素を生成する。そのため、色設定文字列などを變更したときは ":set syn=xpm" などとして xpm.vim を讀み直さなければならない。

色つきのピクセルをコピーするには "yl" で "pixel" をヤンクし、どこかで "P" としてそれを插入する。

マウスで圖を描くには、次のやうにしてみるとよい:

:function! GetPixel()
:   let c = getline(".")[col(".") - 1]
:   echo c
:   exe "noremap <LeftMouse> <LeftMouse>r".c
:   exe "noremap <LeftDrag>  <LeftMouse>r".c
:endfunction
:noremap <RightMouse> <LeftMouse>:call GetPixel()<CR>
:set guicursor=n:hor20          " to see the color beneath the cursor

これを行ふと、右ボタンがピペットになり、左ボタンがペンになる。これは 1 ピクセルにつき 1 文字だけとなつてゐる XPM ファイルでうまく機能する。ピクセル文字列の外をクリックしてはならない。これを自由に改良してください。

セルサイズが正方形のフォントを使ふと見榮えがよくなる。X の場合の例:

:set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-*

YAML

YAML スキーマとはタグのコンビネーションと、特定されないタグを解決する爲のメカニズムである。ユーザーにとつてはこれはプレーンなスカラーのコンテンツに依存してその簡素なスカラー (實際は文字列もしくはそれ以外の何か) をそれぞれ異なる値として扱ふ YAML パーサーを意味してゐるかもしれない: null, boolean, floating-point, integer. ‘g:yaml_schema‘ オプションは特別にハイライトさせるスキーマの値を特定する爲のオプション。サポートしてゐるスキーマは

SchemaDescription
failsafe追加されるハイライトはない。
jsonJSON スタイルの number や boolean, null をサポートする。
corenumber や boolean, null をよりサポートする。
pyyamltimestamp のハイライトをサポートをコアスキーマに追加するが、number がどの樣に認識されるか、boolean 型として認識する爲に多くの値が追加されたといふ點で幾らか違ひがある。

デフォルトのスキーマは ‘core‘。

Note:

實際にはスキーマは、プレーンなスカラーに限定されるものではない、これが YAML 仕樣の定義に存在する唯一の違ひであり、唯一異なるシンタックスが定義されてゐるといふ點を注意しておく。

ZSH

この zsh のための構文スクリプトは、構文に基づく折り疊みを可能にする:

:let g:zsh_fold_enable = 1

6. 構文を定義する

構文アイテムには 3 つのタイプがある。

  1. キーワード (Keyword)
    これはオプション ’iskeyword’ で定義されるキーワード文字だけからなる。他の構文要素を含むことはできない。完全な單語 (マッチの前後にキーワード文字が存在しない) にのみマッチする。キーワード "if" は "if(a=b)" にはマッチするが、"ifdef x" にはマッチしない。"(" はキーワード文字でなく、"d" はキーワード文字だから。
  2. マッチ (Match)
    單一の正規表現パターンにマッチする。
  3. リージョン (Region)
    正規表現パターン "start" のマッチ位置から始まり、正規表現パターン "end" のマッチ位置で終はる。その閒にどんなテキストがあつてもよい。正規表現パターン "skip" を使ふとパターン "end" にマッチするのを避けることができる。

複數の構文アイテムを1つの構文グループに入れることができる。構文グループにはハイライト屬性を與へることができる。例へば、"/* .. */" のコメントを定義する要素と "// .." のコメントを定義する要素を作り、兩方を "Comment" グループに入れる。そして "Comment" を靑のボールドフォントで表示するやうに指定すると、兩方のタイプのコメントに對して同じハイライトがされるやうになる。

1 つの構文要素に對し 1 つの構文グループを作つてもよいし、すべての要素を 1 つのグループに入れてもよい。これはハイライト屬性をどう指定したいかによる。各要素をそれ自身のグループに入れるとすると、たくさんのグループに對して色を指定しなければならなくなる。

Note:
構文グループとハイライトグループは似てゐるが異なることに注意。ハイライトグループに對してはハイライト屬性を與へることになる。それらの屬性が同名の構文グループに對して適用される。

同じ箇所に對して複數のアイテムがマッチした場合には、最後に定義されたものが有效になる。よつて同じテキストにマッチする要素を使つて、以前に定義された構文アイテムを上書きすることができる。大文字・小文字の違ひも含めてマッチするキーワードがある場合は、さうでないものより優先される。

優先順位

複數の構文アイテムがマッチするときは、以下のルールが適用される:

  1. 複數のマッチまたはリージョンアイテムが同じ場所で始まるときは、後に定義されたものが優先される。
  2. マッチとリージョンよりキーワードが優先される。
  3. より前の位置から始まる要素が優先される。

大文字・小文字の區別

:sy[ntax] case [match | ignore]

これ以降の ":syntax" コマンドが大文字・小文字を區別するかどうかを定義する。"match" を使ふと區別し、"ignore" を使ふと區別しなくなる。これ以前の要素には影響せず、次の ":syntax case" コマンドまでのすべての要素に影響する。

:sy[ntax] case

"syntax case match" または "syntax case ignore" (飜譯される)を表示する。

スペルチェック

:sy[ntax] spell [toplevel | notoplevel | default]

構文アイテムに入つてゐないテキストに對して、どこでスペルチェックを行ふかを定義する:

toplevel:テキストのスペルチェックを行ふ。
notoplevel:テキストのスペルチェックを行はない。
default:クラスタ @Spell があるときスペルチェックを行はない。

構文アイテムに入つてゐるテキストはクラスタ @Spell と @NoSpell を使ふ |spell-syntax|。クラスタ @Spell と@NoSpell がないときは、スペルチェックは "default" と "toplevel" に對して行はれる。

スペルチェックを有效化するにはオプション ’spell’ をオンにしなければならない。

:sy[ntax] spell

"syntax spell toplevel", "syntax spell notoplevel" または "syntax spell default" (飜譯される) を表示する。

SYNTAX ISKEYWORD 設定

:sy[ntax] iskeyword [clear | {option}]

キーワード文字を定義する。’iskeyword’ オプションに似てゐるがシンタックスハイライトのみに適用される。

clear:シンタックス固有の iskeyword の設定を無效にし、バッファローカルの ’iskeyword’ 設定を有效にする。
{option}シンタックスの ’iskeyword’ オプション値を設定する。

例:

:syntax iskeyword @,48-57,192-255,$,_

これは全てのアルファベットと數字、アクセント付き文字、および "_" と "$" をシンタック固有の iskeyword オプションに設定する。

引數を指定しない場合は現在の値を表示する。

このオプションを設定するとシンタックスパターン內での |/\k| のマッチや |:syn-keyword| が新しいマッチをチェックする際のデリミタに影響する。

シンタックスファイルを書く際はこのコマンドを使つて言語固有の文法に對する正しい値を設定し ’iskeyword’ を變更しない事が推奬されてゐる。

キーワードの定義

:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}]

キーワードを定義する。

{group-name}"Comment" のやうな構文グループ名。
[{options}]後述の |:syn-arguments| を參照。
{keyword} ..このグループに含めるキーワードのリスト。

例:

:syntax keyword   Type   int long char

{options} は行のどこに置いてもよい。それらは與へられたキーワード全てに適用される。オプションがキーワードの後にあつても同じ。以下の例はまつたく同じ意味になる:

:syntax keyword Type contained int long char
:syntax keyword Type int long contained char
:syntax keyword Type int long char contained

Vim の ex コマンドのやうにキーワードに短縮形があるとき、省略可能な部分を [] でくくることによつて受け入れるキーワードをいっぺんに定義することができる:

:syntax keyword   vimCommand     ab[breviate] n[ext]

キーワードは、その文字全てがオプション ’iskeyword’ に含まれてゐないと認識されないことに注意。1 文字でも含まれてゐないものがあると、そのキーワードは認識されない。マルチバイト文字を使ふこともできる。マルチバイト文字は ’iskeyword’ に含まれてゐる必要はない。シンタックス特有の iskeyword 設定については |:syn-iskeyword| を參照。

キーワードは常にマッチやリージョンより優先される。キーワードは一要素以上マッチしたとき使はれる。キーワードは入れ子にならなく、それ以外のものを含むこともできない。

Note:
オプション名と同じ單語は、それがその位置で利用できないものであつたとしても、キーワードとして定義することはできない。マッチで代用すること。

キーワードの長さは最大 80 文字である。

containment が異なれば、同じキーワードを複數回定義することができる。例へば、まづキーワードを contained でなく定義して1つのハイライトグループを設定し、次に contained として定義して別のハイライトグループを設定することができる。例:

:syn keyword vimCommand tag
:syn keyword vimSetting contained tag

構文要素の外側に "tag" があつたときはハイライトグループ "vimCommand" が適用される。"vimSetting" を含む構文要素の中に "tag" があつたときは "vimSetting" グループが適用される。

マッチの定義

:sy[ntax] match {group-name} [{options}]
                       [excludenl]
                       [keepend]
                       {pattern}
                       [{options}]

マッチを定義する。

{group-name}"Comment" のやうな構文グループ名。
[{options}]後述の |:syn-arguments| を參照。
[excludenl]行末の "$" を含んでゐるパターンに對して、行末以降までマッチやリージョンを擴張しないやうにする。パターンの前に置かなければならない。|:syn-excludenl|
keepend內包されたマッチが終了パターンを越えないやうにする。|:syn-keepend| を參照。
{pattern}マッチを定義する檢索パターン。後述の |:syn-pattern| を參照。

Note:
パターンは複數行にもマッチする。よつて檢索を開始する場所によつてマッチが變はつてくる可能性がある。シンクロナイズが關係してくることに注意。

例 (文字定數にマッチする):

:syntax match Character /'.'/hs=s+1,he=e-1

リージョンの定義

:sy[ntax] region {group-name} [{options}]
                       [matchgroup={group-name}]
                       [keepend]
                       [extend]
                       [excludenl]
                       start={start_pattern} ..
                       [skip={skip_pattern}]
                       end={end_pattern} ..
                       [{options}]

リージョンを定義する。複數行にわたつてもよい。

{group-name}"Comment" のやうな構文グループ名。
[{options}]後述の |:syn-arguments| を參照。
[matchgroup={group-name}]以下の開始パターンと終了パターンのマッチにのみ使はれる構文グループ。マッチの開始パターンと終了パターンには使はれない。開始パターンと終了パターン用に異なるグループを使はないやうにリセットするには NONE を使ふ。|:syn-matchgroup| を參照。
keepend內包されたマッチが終了パターンを越えないやうにする。|:syn-keepend| を參照。
extendこのリージョンを含むアイテムの "keepend" を上書きする。|:syn-extend| を參照。
excludenl行末の "$" を含んでゐるパターンに對して、行末以降までマッチやアイテムを擴張しないやうにする。終了パターンに對してのみ使ひ道がある。適用するパターンの前に置かねばならない。|:syn-excludenl|
start={start_pattern}リージョンの開始を定義する檢索パターン。後述の |:syn-pattern| を參照。
skip={skip_pattern}その中ではリージョンの終了を探さないテキストを定義する檢索パターン。|:syn-pattern| を參照。
end={end_pattern}リージョンの終了を定義する檢索パターン。後述の |:syn-pattern| を參照。

例:

:syntax region String   start=+"+  skip=+\\"+  end=+"+

start/skip/end パターンとオプションはどんな順序で書いてもよい。skip パターンは 0 個か 1 個許される。start と end パターンは 1 個以上なければならない。つまり skip パターンは省略できるが、少なくとも 1 つの start と end パターンを書かなければならない。等號記號の前後にはホワイトスペースがあつてもよい (たいていはホワイトスペースがないはうが見やすいが)。

2 個以上の start パターンが與へられたときは、それらの 1 つがマッチすれば十分である。つまり start パターンらの閒には OR 關係があることになる。最後にマッチしたものが使はれる。end パターンについても同じである。

end パターンの檢索は start パターンの直後から行はれる。これは end パターンのマッチと start パターンは決して重ならないことを意味する。

skip と end パターンは改行をまたいでマッチしてもよい。しかしパターンの檢索はどの行からも始まりうるので、望みどほりにならないこともある。skip パターンは次の行の end パターンのマッチを囘避しない。問題を避けるには單一行のパターンを使ふこと。

Note:
リージョンの開始は、start パターンのマッチによつてのみ決まる。end パターンの照合のチェックはされない。次のは機能しない:

:syn region First  start="("  end=":"
:syn region Second start="("  end=";"

Second は常に First より前にマッチする (最後に定義されたパターンが優先される)。かうすると、その前に ’:’ があるかどうかにかかはらず、Second のリージョンが次の ’;’ まで續く。マッチを使ふとうまくいく:

:syn match First  "(\_.\{-}:"
:syn match Second "(\_.\{-};"

このパターンは "\_." によつて任意の文字と改行にマッチし、"\{-}" によつて繰り返しにマッチする (最小限の個數の繰り返し)。

デフォルトでは內包されたマッチは end パターンのマッチを隱す。これはネスト用に便利である。例へば、"{" で始まり "}" で終はるリージョンがもう 1 つのリージョンを含むことができる。"}" に出會ふと內包されたリージョンが終はり、外側のリージョンは終了しない:

{           外側の "{}" リージョンの開始
    {       內包された "{}" リージョンの開始
    }       內包された "{}" リージョンの終了
}           外側の "{}" リージョンの終了

この擧動が望みでないなら、引數 "keepend" をつければ、外側のリージョンの end パターンのマッチによつて內包されたアイテムも終了させることができる。さうすると同一リージョンのネストが不可能になるが、內包されたアイテムで end パターンをスキップさせることなく、end パターンの一部をハイライトすることができる。例:

:syn match  vimComment +"[^"]\+$+
:syn region vimCommand start="set" end="$" contains=vimComment keepend

"keepend" によつて vimCommand が常に行末で終はるやうにしてゐる。たとへ內包された vimComment が <EOL> とのマッチを含んでゐてもそのやうになる。

"keepend" が使はれないときは、內包されたマッチの後で end パターンのマッチが檢索される。"keepend" が含まれてゐるときは最初に end パターンにマッチしたところで終了し、內包されたマッチもすべてそこで終了になる。 引數 "extend" を使ふと "keepend" の擧動が變はる。"keepend" 付きのアイテム中に "extend" 付きのアイテムが內包されてゐると、"keepend" が無視され、外側のリージョンが擴張される。これによつていくつかのアイテムに對して例外的にリージョンを擴張させるやうにできる。例:

:syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript
:syn match htmlItem +<[^>]*>+ contained
:syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend

この例では、htmlItem の位置で htmlRef が終了する。htmlItem は <> 要素をハイライトするためだけに使はれる。htmlScript アイテムは htmlRef アイテムを擴張する。

もう 1 つの例:

:syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend

"</a>" を別の色でハイライトしたいときなどのために、"keepend" つきでリージョンを定義し、內包するアイテムによつて終端が變更されないやうにしてゐる。ただし xmlFold がネストしたとき(それ自身を含んだとき)、"extend" が適用され、內側の "</a>" はそのリージョン自身だけを終了させ、それを含んでゐるリージョンは終了しない。

マッチ用のパターンやリージョンの終了パターンが行末にマッチさせるために ’$’ を含んでゐると、それを含むリージョンアイテムが次の行まで繼續するやうになる。例へば、"\\$" (行末のバックスラッシュ) とのマッチを使ふと、通常は行末で終了するはずのリージョンを繼續させることができる。これはデフォルトの擧動である。これが望みどほりでないなら、これをされる 2 つの方法がある:

  1. 外側のアイテムに "keepend" を使ふ。かうすると含んでゐるアイテム全てに對して擴張しないやうにする。含んでゐるアイテム全てが外側のアイテムを擴張してはならないときに使へる。
  2. 內側のアイテムに "excludenl" を使ふ。かうするとそのマッチに對して、それを含んでゐるマッチやリージョンを擴張しないやうにする。これはいくつかのアイテムだけが外側のアイテムを擴張してはならないときに使へる。"excludenl" はそれを適用するパターンの前に置かねばならない。

"matchgroup" は、リージョンの本體とその開始・終了パターンに對して異なるハイライトをしたいときに使へる。例:

:syntax region String matchgroup=Quote start=+"+  skip=+\\"+	end=+"+

かうすると引用符を "Quote" グループでハイライトし、その閒にあるテキストを "String" グループでハイライトすることができる。"matchgroup" はそれが從ふすべての開始・終了パターンに對して使はれる。matchgroup を使はないやうに戾すには "matchgroup=NONE" を使ふ。

開始・終了パターンが "matchgroup" でハイライトされるとき、そのリージョンに含まれてゐるアイテムは無視される。これによつて含まれてゐるアイテムが開始・終了パターンにマッチするのを避けることができる。"transparent" を使つてゐる場合、これは "matchgroup" でハイライトされる開始・終了パターンのマッチ部分には適用されない。

次の例は、3 段階の括弧を異なる色でハイライトする例である:

:sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2
:sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained
:sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained
:hi par1 ctermfg=red guifg=red
:hi par2 ctermfg=blue guifg=blue
:hi par3 ctermfg=darkgreen guifg=darkgreen

構文グループの最大數は 19999 である。

7. :syntax の引數

構文アイテムを定義する :syntax コマンドにはたくさんの引數がある。ここでは共通のものを說明する。引數はどんな順序でもよく、パターンと混ざつてゐてもよい。

全てのコマンドが全ての引數を受けいれるわけではない。次の表はどの引數がどのコマンドに對して利用可能かを示してゐる:

containsonelinefolddisplayextendconcealends
:syntax keyword------
:syntax matchyes-yesyesyes-
:syntax regionyesyesyesyesyesyes

以下の引數は 3 つのコマンド全てに對して使へる:

conceal
cchar
contained
containedin
nextgroup
transparent
skipwhite
skipnl
skipempty
conceal

{譯注: conceal = 隱す、祕密にする}

"conceal" 引數が指定されると、そのアイテムは Conceal 可能になる。アイテムが實際に Conceal 表示されるかどうかは ’conceallevel’ オプションの設定に依存する。現在行のアイテムを Conceal 表示するかどうかは ’concealcursor’ オプションで制禦できる (行の編輯を妨げないやうにするため)。もう 1 つの方法として |matchadd()| を用ゐても、テキストを隱すことができる。

concealends

"concealends" 引數が指定されると、リージョンの開始部分と終了部分が Conceal 可能になる (リージョンの中身はならない)。アイテムが實際に Conceal 表示されるかどうかは ’conceallevel’ の設定に依存する。"matchgroup" で別のハイライトを設定することでリージョンの終了部分だけを別に Conceal 表示するといふこともできる。

cchar

"cchar" 引數はアイテムが Conceal 表示されたときに實際に畫面に表示される文字を定義する ("cchar" は conceal 引數が指定されたときのみ意味を持つ)。"cchar" が指定されてゐない場合はデフォルトの Conceal 文字として ’listchars’ オプションが使はれる。Tab 文字のやうなコントロール文字は使用できない。例:

:syntax match Entity "&amp;" conceal cchar=&

ハイライトについては |hl-Conceal| を參照のこと。

contained

引數 "contained" が與へられると、そのアイテムはトップレベルでは認識されず、他のマッチの "contains" フィールドで指定されたときのみ認識される。例:

:syntax keyword Todo    TODO    contained
:syntax match   Comment "//.*"  contains=Todo
display

引數 "display" が與へられると、そのアイテムは檢出されたハイライトが表示されない時にはスキップされる。かうすることで、表示されるべきテキストの構文狀態だけを檢索するときにはこのアイテムはスキップされ、ハイライトが高速になる。

通常は、以下の條件に合ふときマッチとリージョンに "display" を使ふとよい:

例として C 言語では次のとき "display" が使へる:

transparent

引數 "transparent" が與へられると、そのアイテムはそれ自身ではハイライトされず、それを含むアイテムのハイライトを引き繼ぐ。これはハイライトはせず、テキストの一部をスキップするためだけに使はれる構文アイテムに對して有效である。

transparent なアイテム自身に引數 "contains" が與へられてゐない場合、それを含むアイテムから引數 "contains=" も受け繼がれる。望まないアイテムが含まれるのを避けるには "contains=NONE" とすること。文字列中の單語をハイライトするが、"vim" だけは例外とする例:

:syn match myString /'[^']*'/ contains=myWord,myVim
:syn match myWord   /\<[a-z]*\>/ contained
:syn match myVim    /\<vim\>/ transparent contained contains=NONE
:hi link myString String
:hi link myWord   Comment

"myVimが "myWord" の後に來てゐるので、"myVim" が優先される (同じ位置で複數のアイテムにマッチした場合、最後に定義されたものが前のものを上書きする)。"transparent" により、"myVim" にマッチしたテキストは "myString" と同じハイライトになる。しかし "myVim" は何も含まない。もし "contains=NONE" を取り除くと、"myVim" は "myString" から引數 contains を受け繼いで "myWord" を含むやうになり、テキスト "vim" は Constant としてハイライトされる。これは、內包されたマッチは同じ位置でそれ自身の內側でマッチしないためかうなる。つまり、ここではマッチ "myVim" は、マッチ "myWord" を上書きしない。

色づけされたテキストは、內包されたアイテムの層のやうにみなすことができる。內包されたアイテムは內包してゐるアイテムより上にあり、そのため內包されたアイテムを見ることができる。內包されたアイテムが transparent な場合、それを透過して見ることができ、よつてそれを含んでゐるアイテムが見える。圖にすると:

        ここから見る

    |   |   |   |   |   |
    V   V   V   V   V   V

       xxxx       yyy           さらに內包されたアイテム達
    ....................        內包されたアイテム (transparent)
=============================   最初のアイテム (最も外側のアイテム)

’x’, ’y’, ’=’ はハイライトされた構文アイテムを表す。’.’ は transparent なグループを表してゐる。

このとき次のやうに見える:

        =======xxxx=======yyy========

つまり transparent な "...." は透過して見える。
oneline

引數 "oneline" をつけると、そのリージョンは行をまたがないといふ意味になる。つまり、現在行の中で完全にマッチしなければならない。しかし、そのリージョンが行をまたぐアイテムを內包してゐる場合は次の行に繼續する。內包されたアイテムによつて行繼續パターンを認識することができる。しかしその場合でも "end" パターンは最初の行內でマッチしなければならない。さうでないとリージョンは開始すらしない。

start パターンが行末にマッチする "\n" を含んでゐるときは、start パターンの終了位置と同じ行に end パターンがなければならない。end パターンも行末を含んでもよい。つまり引數 "oneline" は、start パターンの終了位置と end パターンの開始位置が同一行にあることを意味する。改行にマッチする skip パターンを使つてもこの規則を變へることはできない。

fold

引數 "fold" はこのアイテムに對して折り疊みレベルを1增加させる。例:

:syn region myFold start="{" end="}" transparent fold
:syn sync fromstart
:set foldmethod=syntax

これは {} ブロックごとに 1 つの折り疊みを作らせる。

折り疊みはそのアイテムの開始位置から始まり、アイテムの終了位置で終はる。開始位置と終了位置が同一行にある場合、折り疊みは作られない。オプション ’foldnestmax’ によつて構文折り疊みのネストを制限できる。

{|+folding| 機能なしでコンパイルされた場合は利用できない}

contains={group-name},..

引數 "contains" の後には構文グループ名のリストを續ける。"contains" で指定されたグループは、そのアイテムの內側で始まることを許可される (內包されるグループによつては、外側のアイテムの終端が擴張されることもある)。これを使ふと、マッチとリージョンが再歸的にネストできるやうになる。引數 "contains" がまつたく指定されない場合は、そのアイテムはどんなグループも內包しない。ここで使ふグループ名は、必ずしも以前に定義してゐなくてもよい。

contains=ALL

contains リストが "ALL" だけのとき、全てのグループがこのアイテムの內側で許可される。

contains=ALLBUT,{group-name},..

contains リストの最初の要素が "ALLBUT" のとき、{group-name} で列擧したグループを除く全てのグループがこのアイテムの內側で許可される。例:

:syntax region Block start="{" end="}" ... contains=ALLBUT,Function
contains=TOP

contains リストの最初の要素が "TOP" のとき、引數 "contained" を持たないグループ全てが許可される。

contains=TOP,{group-name},..

"TOP" と同樣だが、{group-name} に列擧したグループは除かれる。

contains=CONTAINED

contains リストの最初の要素が "CONTAINED" のとき、引數 "contained" を持つグループ全てが許可される。

contains=CONTAINED,{group-name},..

"CONTAINED" と同樣だが、{group-name} に列擧したグループは除かれる。

"contains" リスト內の {group-name} はパターンであつてもよい。そのパターンにマッチするグループ名全てが含まれる ("ALLBUT" が使はれたときはそれが除かれる)。パターンはホワイトスペースや ’,’ を含んではならない。例:

... contains=Comment.*,Keyw[0-3]

パターンの照合はその syntax コマンドが實行されたときに行はれる。それ以降に定義されたグループは照合されない。また、現在の syntax コマンドが新しいグループを定義してゐる場合、そのグループは照合されない。ファイル內に syntax コマンドを書く場合、定義されてゐないグループを當てにすることはできないことに注意。これは、そのファイルは以前に讀み込まれてゐるかもしれず、":syn clear" はグループ名を削除しないためである。

內包されたグループはリージョンの start と end パターン內にもマッチする。これが望みの擧動でないなら、引數 "matchgroup" を使ふとよい |:syn-matchgroup|。オフセット "ms=" と "me=" によつて內包されたアイテムがマッチする領域を變更することができる。これはハイライトされる範圍も制限することに注意。

containedin={group-name}...

引數 "containedin" の後には構文グループ名のリストを續ける。するとこのアイテムがそれらのグループの內側で始まることが許可される。これは外側のアイテムが引數 "contains=" でこのアイテムを指定したのと同じやうに動作する。

{group-name}... の指定の仕方は前述の "contains" と同樣である。

これは構文アイテムを後から追加するときに便利である。既に定義されてゐるアイテムの定義を變更することなく、その內側にアイテムを含めることができる。例へば、C の構文を讀み込んだ後で、C コメント中の單語をハイライトしたいときは:

:syn keyword myword HELP containedin=cComment contained

Note:
このアイテムがトップレベルではマッチしないやうに "contained" を使つてゐる。

"containedin" の照合は、このアイテムが現れる場所に追加される。引數 "contains" も通常通り追加される。注意: キーワードは他のアイテムを含むことができないため、"containedin" の先にキーワードを指定することは無意味である。

nextgroup={group-name},..

引數 "nextgroup" の後には構文グループ名のリストをコンマ區切りで續ける ("contains" と同樣。パターンを使ふこともできる)。

引數 "nextgroup" が與へられると、マッチやリージョンの終了位置の後ろで、指定された構文グループにマッチする部分が探される。どのグループもマッチしなければ、ハイライトは通常通り續けられる。マッチが見つかつた場合はそのグループが使はれる。現在のグループの引數 "contains" でそのグループが指定されてゐなくてもさうなる。つまり、これは指定されたグループの優先度を最大にすることと同じである。例:

:syntax match  ccFoobar  "Foo.\{-}Bar"  contains=ccFoo
:syntax match  ccFoo     "Foo"	    contained nextgroup=ccFiller
:syntax region ccFiller  start="."  matchgroup=ccBar  end="Bar"  contained

これは "Foo" の後に "Bar" が現れたときのみ、"Foo" と "Bar" に異なるハイライトをする。以下のテキストにおいて、"f" と書いたところは ccFoo でハイライトされ、"bbb" と書いたところは ccBar でハイライトされる。

Foo asdfasd Bar asdf Foo asdf Bar asdf
fff         bbb      fff      bbb

Note:
".\{-}" を使ひ、次の Bar までのスキップが最小になるやうにしてゐる。もし ".*" を使ふと、最初の "Foo" と最後の "Bar" が ccFooBar のマッチ部分に含まれるため、"Bar" と "Foo" の閒の "asdf" が "ccFoobar" グループとしてハイライトされてしまふ (|pattern| を參照)。

skipwhite または
skipnl または
skipempty

これら 3 個の引數は "nextgroup" と組み合はせたときのみ意味を持つ。これらを指定すると、次のグループがマッチする前に、以下のテキストがあつてもよくなる。

skipwhiteスペースとタブ文字をスキップする
skipnl行末をスキップする
skipempty空行をスキップする (自動的に "skipnl" も含むことになる)

例へば "skilwhite" を指定した場合、次のどのグループもホワイトスペースにマッチしないならば、ホワイトスペースをスキップする。

"skipnl" を指定すると、nextgroup の照合が次の行からも探される。これは現在のアイテムが行末で終はつたときのみ有效である。"skipnl" を指定しない場合、nextgroup は同一行のそのアイテム以降から照合される。

次のグループまでスキップされたテキストの中では他のグループの照合は無視される。次のグループの照合が見つからなかつたとき、再び他のグループの照合が檢索される。つまり、次のグループの照合と、ホワイトスペースと <EOL> のスキップは他のアイテムより優先される。

例:

:syn match ifstart "\<if.*"     nextgroup=ifline skipwhite skipempty
:syn match ifline  "[^ \t].*" nextgroup=ifline skipwhite skipempty contained
:syn match ifline  "endif"    contained

Note:
マッチ "[^ \t].*" はホワイトスペース以外の全てのテキストにマッチする。よつて "endif" にもマッチする。そのためマッチ "endif" を最後に置き、最優先にしてゐる。

Note:
この例はネストした "if" には機能しないことに注意。ネストに對應するには引數 "contains" を指定する必要がある(この例では簡單のため省略した)。

暗默 CONCEAL (IMPLICIT CONCEAL)

:sy[ntax] conceal [on|off]

これ以降の ":syntax" コマンドでキーワード、マッチ、リージョンを定義したときに "conceal" フラグをセットするかどうかを定義する。":syn conceal on" を實行した後で ":syn keyword", ":syn match", ":syn region" を實行すると、暗默的に "conceal" フラグがセットされる。":syn conceal off" を實行することで通常の狀態、つまり "conceal" フラグを明示的に設定しなければならない狀態に戾る。

:sy[ntax] conceal

"syntax conceal on" または "syntax conceal off" (飜譯される) を表示する。

8. syntax のパターン

syntax コマンドでは、パターンの前後を同じ文字で圍まなければならない。これは ":s" コマンドと同樣である。もつともよく使はれるのはダブルクォートである。しかしパターンがダブルクォートを含んでゐる場合は、そのパターンが含んでゐない他の文字を使つたはうがよい。例:

:syntax region Comment  start="/\*"  end="\*/"
:syntax region String   start=+"+    end=+"+   skip=+\\"+

パターンの說明については |pattern| を參照。構文パターンは常に ’magic’ オプションがセットされてゐるのと同じやうに解釋される (實際の ’magic’ オプションの値とは無關係)。また、’cpoptions’ に ’l’ フラグが含まれてゐない場合と同じやうに解釋される。これは構文ファイルの可搬性を高め、’compatible’ と ’magic’ の設定と無關係にするためである。

"[a-z]*" など空文字列にマッチするパターンは避けること。これは全ての位置にマッチするため、ハイライトがとても遲くなる。

パターンに文字數のオフセットを指定することができる。これによつてハイライトされる部分を變更したり、マッチやリージョンに含まれるテキスト領域 (これは他のアイテムを照合するときにだけ關係する) を變更することができる。どちらもマッチしたパターンに相對的である。skip パターンに對して文字數のオフセットを指定すると、end パターンの檢索が始まる位置を決めることができる。

オフセットは "{what}={offset}" の形で指定する。

{what} は次の 7 個の文字列のどれかである:

msMatch Startマッチしたテキストの開始位置のオフセット
meMatch Endマッチしたテキストの終了位置のオフセット
hsHighlight Startハイライトが始まる位置のオフセット
heHighlight Endハイライトが終はる位置のオフセット
rsRegion Startリージョンの本體が始まる位置のオフセット
reRegion Endリージョンが終はる位置のオフセット
lcLeading Contextパターンの "leading context" を過ぎた後のオフセット

{offset} は次のうちのどれか:

sパターンのマッチ部分の先頭
s+{nr}パターンのマッチ部分の先頭から右へ {nr} 文字目
s-{nr}パターンのマッチ部分の先頭から左へ {nr} 文字目
eパターンのマッチ部分の末尾
e+{nr}パターンのマッチ部分の末尾から右へ {nr} 文字目
e-{nr}パターンのマッチ部分の末尾から左へ {nr} 文字目
{nr}("lc" 專用): 右へ {nr} 文字目からマッチを開始する

例: "ms=s+1", "hs=e-2", "lc=3"。

どのパターンの後にどのオフセットを指定してもよいが、それが意味を持たない場合もある。次の表はどのオフセットが實際に有效かを示してゐる:

msmehshersrelc
match itemyesyesyesyes--yes
region item startyes-yes-yes-yes
region item skip-yes----yes
region item end-yes-yes-yesyes

複數のオフセットの閒に ’,’ を入れて連結することができる。例:

:syn match String  /"[^"]*"/hs=s+1,he=e-1
some "string" text
      ^^^^^^                highlighted

Note:

例 (コメントにマッチするが /* と */ はハイライトしない):

:syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1
/* this is a comment */
  ^^^^^^^^^^^^^^^^^^^     ここがハイライトされる

より複雜な例:

:syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1
abcfoostringbarabc
   mmmmmmmmmmm     マッチ部分
     sssrrreee     start/region/end としてハイライトされる部分
                   ("Foo", "Exa", "Bar")

Leading context

Note:
これは古い機能であり、以前のバージョンとの後方互換性のためだけに殘されてゐる。現在はパターン中の |/\@<=| コンストラクトを使ふことが推奬されてゐる。

"lc" オフセットはリーディングコンテキストを指定する。これはパターンの一部になければならないが、マッチ部分の一部とは見なされないものである。"lc=n" のオフセットを使ふとパターンの照合を試みる前にn桁戾るやうになる。リーディングコンテキスト內に他のパターンにマッチしてゐる文字が現れてもよい。これはマッチの前方にあつてはならない「エスケープ」文字を指定する場合などに使へる:

:syn match ZNoBackslash "[^\\]z"ms=s+1
:syn match WNoBackslash "[^\\]w"lc=1
:syn match Underline "_\+"
___zzzz ___wwww
^^^     ^^^     Underline にマッチする
    ^ ^         ZNoBackslash にマッチする
           ^^^^ WNoBackslash にマッチする

"ms" を指定しないと自動的に "lc" と同じ値にセットされる。

複數行にわたるパターン

パターンが "\n" を含むと改行にマッチするやうになる。たいていの場合これは期待通りに動作するが、少しだけ例外がある。

start パターンにオフセットをつけるとき、マッチ部分の開始位置が次の行の先頭であつてはならない。ハイライトは次の行で始まつてもよい。"\zs" を使ふときも、マッチ部分の開始位置が他の行になつてはならない。

skip パターンも "\n" を含んでよい。ただし次の行の最初の文字が skip パターンにマッチしてゐても、そこから end パターンの檢索が續けられる。これは、再描畫は領域內のどの行でも始まることができ、skip パターンが前の行から始まつたかどうかはチェックされないからである。例へば、skip パターンが "a\nb" で、end パターンが "b" のとき、次のテキストの 2 行目で end パターンがマッチする。

x x a
b x x

つまり、skip パターンは "\n" 以降の文字にはマッチしないことになる。

外部マッチ

リージョンのパターンでは特別に以下の正規表現が使へる:

\z(\)

一部を「external」としてマークする。これをつけると他のパターンからアクセスできるやうになる。現在はリージョンの start パターン內でのみ使用可能。

\z1 ... \z9

start パターンにマッチしたテキスト中からマークしておいた部分を參照する。

リージョンの start と end パターンで正規表現の一部を共有したい場合がある。一般的な例としては Perl や Unix シェルのヒアドキュメントがある。これは特別な正規表現アイテム "\z" を使へば達成できる。これは正規表現の一部を "external" としてマークしておく。するとその部分を他のパターンから參照できるやうになる。例へば、ヒアドキュメントは次のやうにすればよい:

:syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$"

このやうに、\z は 2 つの役割を果たす。start パターンにおいては正規表現の一部 "\(\I\i*\)" を external としてマークする。end パターンでは \z1 によつて start パターン中の最初のマークされた部分への外部參照とする。外部參照は skip パターン中でも使へる:

:syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1"

Note:
通常のマークと external なマークはまつたく獨立であり、別々に番號が振られる。例へば、文字列 "aabb" に對してパターン "\z(..\)\(..\)" を適用すると、\1は "bb" を參照し、\z1 は "aa" を參照するやうになる。external なマークをした部分は、通常のマークと違つて、同一パターン內で後方參照することはできない。ある部分に對して通常のマーク、external なマーク兩方をつけたい場合は、"\(\z(...\)\)" のやうにネストさせればよい。

Note:
一行內でマッチした部分しか參照できないことに注意。複數行にわたつてマッチした部分は參照できない。

9. クラスタ

:sy[ntax] cluster {cluster-name} [contains={group-name}..]
                        [add={group-name}..]
                        [remove={group-name}..]

このコマンドを使ふと、複數の構文グループを1つの名前のもとにまとめることができる。このまとまりのことをクラスタと呼ぶ。

contains={group-name}..

クラスタに含まれるグループを指定する。

add={group-name}..

指定したグループをクラスタに加へる。

remove={group-name}..

指定したグループをクラスタからとり除く。

定義したクラスタは contains=.. や containedin=.., nextgroup=.., add=.., remove=.. などの文脈で使ふことができる。そのとき、クラスタ名の頭に "@" をつける。クラスタを定義する前にそのクラスタ名を使用してもよい。

例:

:syntax match Thing "# [^#]\+ #" contains=@ThingMembers
:syntax cluster ThingMembers contains=ThingMember1,ThingMember2

この例からわかるやうに、クラスタに對する變更はさかのぼって效果がある。クラスタの定義は直前になつてチェックされる。例:

:syntax keyword A aaa
:syntax keyword B bbb
:syntax cluster AandB contains=A
:syntax match Stuff "( aaa bbb )" contains=@AandB
:syntax cluster AandB add=B    " これによつて 2 つのキーワードが Stuff 內でマッチするやうになる

これはクラスタのネスト度にも關係がある:

:syntax keyword A aaa
:syntax keyword B bbb
:syntax cluster SmallGroup contains=B
:syntax cluster BigGroup contains=A,@SmallGroup
:syntax match Stuff "( aaa bbb )" contains=@BigGroup
:syntax cluster BigGroup remove=B    " B は BigGroup 內にないので無意味
:syntax cluster SmallGroup remove=B  " Stuff 內で bbb がマッチしなくなる

クラスタの最大數は 9767 である。

10. 構文ファイルのインクルード

構文ファイルの中で、關係する構文ファイルをインクルードしたい場合がある。これには、構文ファイルの關係に應じて 2 種類の方法がある:

インクルードされるファイル中で宣言された構文アイテム全てに "contained" フラグがつけられる。さらにグループのリストを指定すると、インクルードされるファイル中のトップレベルの構文アイテム全てに對してそのリストがつけられる。

" In perl.vim:
:syntax include @Pod <sfile>:p:h/pod.vim
:syntax region perlPOD start="^=head" end="^=cut" contains=@Pod

{file-name} が絕對パスである場合 ("/", "c:", "$VAR", "<sfile>" のどれかで始まる場合) そのファイルが讀み込まれる (sourceされる)。相對パスの場合 (例: "syntax/pod.vim")、そのファイルが ’runtimepath’ 中から探される。マッチしたファイル全てが讀み込まれる。相對パスを使用することが推奬される。さうすればユーザーが ":syn include" を書き換へることなく、インクルードされるファイルを改變して別の場所に置けるからである。

インクルードの最大數は 999 である。

11. 表示のシンクロナイズ

ドキュメント中のどの位置からでも再描畫を開始できると望ましい。これを實現するには、再描畫を開始する位置における構文の狀態を知る必要がある。

:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...]

シンクロナイズには4つのやり方がある:

  1. 常にファイルの最初からパースする。|:syn-sync-first|
  2. C スタイルのコメントに基づく。Vim は C コメントの仕樣を理解し、現在行がコメントの內側から始まつてゐるか外側から始まつてゐるかを判定することができる。|:syn-sync-second|
  3. 一定行さかのぼり、そこからパースを開始する。|:syn-sync-third|
  4. テキストをさかのぼり、シンクロナイズを始める目印の正規表現を檢索する。|:syn-sync-fourth|

最後の3つの方法に關して、さかのぼる行數は "minlines" と "maxlines" で制限される。

引數 "minlines={N}" が指定されると、常に少なくともその行數さかのぼってパースが開始される。パースする行數が少なすぎて正しくハイライトできないかもしれないとき、またはシンクロナイズを使ふのが不可能であるとき、この引數を使ふとよい。

引數 "maxlines={N}" が指定されると、コメントや正規表現を檢索するためにさかのぼる行數が最大 N 行になる。これは遲いマシンを使つてゐて、シンクロナイズする行數が少ないとわかつてゐるときに便利である。例:

:syntax sync maxlines=500 ccomment

複數行にマッチする正規表現を使つてゐるとき、ある行に變更を施すと、前の行でマッチしていた正規表現がマッチしなくなつてしまふことがある。この場合、變更を施した位置より上からシンクロナイズを行はなければならない。その行數を引數 "linebreaks" で指定する。例へば、正規表現が改行を1個含んでゐる場合はこのやうにする:

:syntax sync linebreaks=1

かうすると、常に變更が施された行の少なくとも1行前から再描畫が開始される。"linebreaks" のデフォルト値は 0。通常 "minlines" の値は "linebreaks" の値より大きい。

第一の方法:

:syntax sync fromstart

ファイルの最初からパースする。この方法を使ふと構文ハイライトが正確になるが、大きいファイルに對しては遲くなる。Vim は以前にパースしたテキストをキャッシュしておく。そのため、遲くなるのはファイルを最初にパースするときだけである。しかし、變更を施すと、それ以降の一部をパースし直さなければならなくなる (最惡の場合はファイルの最後まで)。

"fromstart" を使ふことは "minlines" を非常に大きな値にすることと同じ效果を持つ。

第二の方法:

第二の方法を使ふには、單に引數 "ccomment" をつければよい。

例:

:syntax sync ccomment

畫面最上行が C スタイルコメントの內側にあると判斷される場合、グループ名が "Comment" のリージョン構文アイテムが使はれる。この方法を使ふには "Comment" といふグループ名のリージョンがなければならないことに注意。他のグループ名を指定することもできる。例:

:syntax sync ccomment javaComment

かうすると、檢出された C コメントのリージョンに對して "syn region javaComment" で指定されたアイテムのうち最後のものが使はれる。ここで指定するリージョンの start パターンが "\/*"、end パターンが "*\/" となつてゐないと適切に機能しない。

引數 "maxlines" を使ふと檢索の行數を制限できる。引數 "minlines" を使ふと少なくともその行數だけさかのぼって開始させることができる (例: 2,3 行だけを受け取るコンストラクトがある場合。ただしその場合シンクロナイズするのが困難)

Note:
"*/" を含む文字列で行をまたぐものがあると、C コメントによるシンクロナイズは適切に機能しない。行をまたいで文字列を書くのは惡いプログラミング習慣である (多くのコンパイラが警告を出す)。また、コメント中に "*/" が現れる機會はまれなので、この制限は注意するほどのものではない。

第三の方法:

第三の方法を使ふには引數 "minlines={N}" を加へればよい。この方法を指定すると、{N} 行前からパースを開始する。これは {N} 行餘分にパースされることを意味する。そのためこの方法は少し遲くなる。

例:

:syntax sync minlines=50

"lines" は "minlines" と同じ意味である (古いバージョンで使はれてゐる)。

第四の方法:

第四の方法は、シンクロナイズパターンと呼ばれる特定のリージョンの末尾でシンクロナイズするものである。行をまたげるのはリージョンだけなので、リージョンの末尾に出會つたら、どの構文アイテムの中にゐるのかを知ることができる。再描畫が始まる行のすぐ上から檢索を開始し、ファイルの上方に向かつて檢索する。

これはシンクロナイズしない構文アイテムとちやうど同じやうに機能する。內包されたマッチ、nextgroup などを使ふことができる。ただし少しだけ違ひがある。

シンクロナイズパターンとのマッチは2通りの使ひ方がある。

  1. 再描畫を始める場所 (シンクロナイズパターンの檢索が始まる場所でもある) から强調のためのパースを始める。そこで有效であると期待される構文グループを指定しなければならない。行をまたぐリージョンが他のリージョンを含んではならない場合にこれはうまく機能する。
  2. ハイライトのためのパースはマッチの直後から繼續される。マッチの直後に現れると期待される構文グループを指定しなければならない。これは前の方法がうまくいかないときに使はれる。より多くのテキストをパースする必要があるため、とても遲い。

兩方のタイプを同時に使ふこともできる。

シンクロナイズパターンだけでなく、他のマッチとリージョンを指定して望まないマッチが見つかるのを避けることができる。

[シンクロナイズパターンが別々に與へられる理由は、シンクロナイズポイントの檢索はたいていの場合、ハイライトするところを判別するよりずつと單純だからである。パターンの數が減るとそれだけ速くなる。]

:syntax sync match {sync-group-name} grouphere {group-name} "pattern" ..

シンクロナイズ用に使ふマッチを定義する。{group-name} はマッチのすぐ後に續く構文グループの名前である。ハイライトのためのテキストのパースはマッチの直後から始まる。この {group-name} がついたリージョンが存在しなければならない。最初に定義されたリージョンが使はれる。マッチの後に構文グループが續かない場合は "NONE" を使ふ。

:syntax sync match {sync-group-name} groupthere {group-name} "pattern" ..

"grouphere" と同樣。ただし {group-name} はシンクロナイズポイントの檢索が始まる行の行頭で使はれる構文グループの名前である。マッチとシンクロナイズパターンの檢索が始まる位置との閒のテキストは構文ハイライトを變へてはならない。例へば C において "/*" と "*/" を後方檢索することができる。"/*" が先に見つかつたら、今はコメントの內側にゐるとわかる。なので "groupthere" は "cComment" となる。"*/" が先に見つかつたら今はコメントの中ではないとわかる。なので "groupthere" は "NONE" となる。(實際は、文字列の中に "/*" と "*/" があるかもしれないので、もう少し込み入つてゐる。これは讀者の練習問題としておく...)。

:syntax sync match .. または
:syntax sync region ..

引數 "groupthere" なしの場合。シンクロナイズポイントの檢索の際にスキップされるリージョンやマッチを定義する。

:syntax sync linecont {pattern}

{pattern} とのマッチが次の行にも繼續されるとみなされる。つまりシンクロナイズポイントの檢索の際、行は連結されてゐるものと見なされる。

引數 "maxlines={N}" が同時に與へられると、マッチを檢索する行がN行に制限される。これは遲いマシンを使つてゐて、シンクロナイズするものが少ないとわかつてゐるときに便利。例:

:syntax sync maxlines=100

全てのシンクロナイズの設定をクリアするには:

:syntax sync clear

あるシンクロナイズパターンをクリアするには:

:syntax sync clear {sync-group-name} ..  

12. 構文アイテムのリストを表示する

次のコマンドは全ての構文アイテムのリストを表示する:

:sy[ntax] [list]

ある構文グループに屬する構文アイテムを表示するには:

:sy[ntax] list {group-name}

あるクラスタに屬する構文グループを表示するには:

:sy[ntax] list @{cluster-name}

":syntax" コマンドに對する他の引數については上を參照。

Note:
":syntax" コマンドは ":sy" とも略記できる。しかし ":syn" の方が見榮えがよいため、普通はこちらが使はれる。

13. ハイライトコマンド

ハイライトグループには 3 つのタイプがある:

現在有效な全てのグループを知るにはこのコマンドを使ふ:

:so $VIMRUNTIME/syntax/hitest.vim

このコマンドは新しいウィンドウを開き、そこに全てのハイライトグループ名を、それ自身の色を使つて表示する。

:colo[rscheme]

現在のカラースキームの名前を表示する。基本的には次のコマンドと同じである

:echo g:colors_name

g:colors_name が定義されてゐない場合は "default" と表示される。|+eval| 機能付きでコンパイルされてゐない場合は "unknown" と表示される。

:colo[rscheme] {name}

カラースキーム {name} を讀み込む。これは ’runtimepath’ の中から "colors/{name}.vim" といふファイルを檢索する。最初に見つかつたものが讀み込まれる。同樣に、’packpath’ 內の全てのプラグインを檢索し、それぞれについて "start" 內、"opt" 內の順で檢索する。

再歸的な讀み込みはされない。つまりカラースキームスクリプト中で ":colorscheme" を使ふことはできない。

カラースキームをカスタマイズするには異なる名前を使ひ、例へば "~/.vim/colors/mine.vim"、‘:runtime‘ を用ゐてオリジナルのカラースキームを讀み込む:

runtime colors/evening.vim
hi Statement ctermfg=Blue guifg=Blue

カラースキームが讀み込まれる前に、自動コマンドイベント |ColorSchemePre| が發生する。

カラースキームが讀み込まれた後、自動コマンドイベント |ColorScheme| が發生する。カラースキームファイルを書くための情報については次を參照:

:edit $VIMRUNTIME/colors/README.txt
:hi[ghlight]

屬性がセットされたハイライトグループを全て表示する。

:hi[ghlight] {group-name}

1 つのハイライトグループを表示する。

:hi[ghlight] clear

全てのハイライトをデフォルトに戾す。ユーザーによつて加へられたグループに對するハイライトが全て消去される。現在の ’background’ の値によつてデフォルトの色が決まる。

:hi[ghlight] clear {group-name}
:hi[ghlight] {group-name} NONE

1 つのハイライトグループに對するハイライトを無效にする。デフォルトの色に戾すわけではない。

:hi[ghlight] [default] {group-name} {key}={arg} ..

ハイライトグループを追加する、または既存のグループに對する强調を變更する。引數 {key}={arg} については |highlight-args| を參照。オプショナルな引數 [default] については |:highlight-default| を參照。

通常、ハイライトグループは起動時に一度だけ追加される。そこでハイライトのデフォルト値をセットする。その後、ハイライトコマンドを使ふことによつてデフォルトでない値に變へることができる。値 "NONE" を使ふとその値をオフにしたりデフォルト値に戾したりできる。

色を變へる簡單な方法は |:colorscheme| コマンドを使ふことである。すると、次のやうな ":highlight" コマンドが書かれたファイルが讀み込まれる:

:hi Comment     gui=bold

Note:
このファイルに含まれない設定は變更されないままである。指定されたフィールドだけが更新され、それ以前の設定とマージされる。なのでその結果は次のコマンド 1 つを實行するのと同じである:

:hi Comment     term=bold ctermfg=Cyan guifg=#80a0ff gui=bold

verbose’ を 0 でない値にしてハイライトグループの一覽を表示すると、最後に設定された場所も表示される。例:

:verbose hi Comment
Comment        xxx term=bold ctermfg=4 guifg=Blue
   Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim

":hi clear" が實行されると、このコマンドを實行したスクリプトがデフォルト値として言及される。より詳しくは |:verbose-cmd| を參照。

ハイライトに關して、ターミナルは3種類に分類される:

term通常のターミナル(vt100, xterm)
ctermカラーターミナル (MS-DOS console, color-xterm。これらは termcap エントリ "Co" をもつ)
guiGUI

ハイライトはこれらのタイプごとに指定できる。さうすることによつて、同じ構文ファイルを全てのターミナルに對して使用でき、ターミナルごとに最善のハイライトを利用できるやうになつてゐる。

1. highlight コマンドの引數 (通常のターミナル用)

term={attr-list}

attr-list はコンマ區切りのリスト (スペースは入れない) で、要素は以下の通り (順序はどうでもよい):

bold
underline
undercurl必ずしも使用できるとは限らない
strikethrough必ずしも使用できるとは限らない
reverse
inversereverse と同じ
italic
standout
nocombine屬性をまとめる代はりに、オーバーライドする
NONE屬性を使用しない (屬性をリセットするために使ふ)

Note:
この引數で "bold" を指定してもよいし、太文字のフォントを指定してもよい。どちらも表示は同じになる。

"undercurl" は波線のこと。"undercurl" が使用できないときは "underline" が使はれる。一般的には "undercurl" および "strikethrough" は GUI でのみ使用できる。その色は |highlight-guisp| で設定できる。

start={term-list} または
stop={term-list}

これらのターミナルコードのリストを使つてターミナルについての標準的でない屬性を得ることができる。

引數 "start" でエスケープシーケンスを指定すると、ハイライトするテキストの前にそれが書き込まれる。そのテキストをハイライトする際にターミナルに送りたいものをなんでも指定できる。引數 "stop" でエスケープシーケンスを指定すると、强調されるテキストの後にそれが書き込まれる。"start" で行つたことを "stop" で元に戾すべきである。さうしないとスクリーンがごちゃごちゃになつてしまふだらう。

{term-list} は 2 つの形を持つ:

  1. エスケープシーケンス付きの文字列。これは "t_" で始まるものと空文字列を除く任意の文字列である。"<Esc>" や "<Space>" のやうな <> 記法が利用できる。例:
    start=<Esc>[27h;<Esc>[<Space>r;
    
  2. ターミナルコードのリスト。ターミナルコードは "t_xx" の形を持つ。"xx" は termcap エントリ名である。ターミナルコードはコンマで區切る。ホワイトスペースは使へない。例:
    start=t_C1,t_BL
    

    對應するターミナルコードが存在しなければならない。

2. highlight コマンドの引數 (カラーターミナル用)

cterm={attr-list}

{attr-list} の說明は上を參照 |attr-list|。色を使ふ場合、引數 "cterm" は "term" と異なる結果になる。例へば、通常のターミナルではコメントにアンダーラインを引き、カラーターミナルではコメントを靑色で表示することができる。

Note:
DOS コンソールなどいくつかのターミナルでは色づけの際にこれらの屬性を混在させることはできない。移植性を重視するには、"cterm=" か "ctermfg=" が "ctermbg=" のどれか 1 つだけを使ふこと。

ctermfg={color-nr} または
ctermbg={color-nr}

引數 {color-nr} で色番號を指定する。色番號の範圍は 0 から termcap エントリ "Co" の値 - 1 までである。

この色番號で實際に表示される色はターミナルの種類とその設定に依存する。"cterm" の設定によつて色が變はる場合もある。例へば、あるシステムでは "cterm=bold ctermfg=3" でそのまま 3 番の色を表示し、他のシステムでは異なる色を表示することがある。

xterm においてはこれはユーザーのリソースに依存し、やや豫測ができない。デフォルトについては xterm のドキュメントを參照のこと。カラー xterm 用の色は .Xdefaults ファイルで變更することができる。このため、ユーザーごとに表示される色が異なるかもしれない。カラー xterm については |xterm-color| を參照。

コンソールウィンドウ內の MSDOS 標準色は固定されてゐる。そのため、これらの色を名前に使つてゐる。一方、X11 の色名の意味は固定されてゐる。そこでハイライトの設定に可搬性を持たせるため、X11 の色設定が使はれてゐる (複雜であるが)。以下の色名を、色番號の代はりに使ふことができる:

NR-16NR-8COLOR NAME
00Black
14DarkBlue
22DarkGreen
36DarkCyan
41DarkRed
55DarkMagenta
63Brown, DarkYellow
77LightGray, LightGrey, Gray, Grey
80*DarkGray, DarkGrey
94*Blue, LightBlue
102*Green, LightGreen
116*Cyan, LightCyan
121*Red, LightRed
135*Magenta, LightMagenta
143*Yellow, LightYellow
157*White

"NR-16" の下の番號は 16 色ターミナル (’t_Co’ が 16 以上のもの) 用である。"NR-8" の下の番號は 8 色ターミナル (’t_Co’ が 16 未滿のもの) 用である。’*’ は ctermfg に bold 屬性がセットされることを意味してゐる。"linux" など多くの8色ターミナルでは明るい色になる。ただし背景色には適用されない。’*’ がないものは bold 屬性なしになる。他の方法で bold 屬性をつけたいなら引數 "cterm=" を "ctermfg=" や "ctermbg=" の後に書くこと。または色名の代はりに番號を使ふこと。

色名の大文字・小文字は無視される。16 色 ansi スタイルターミナル (xterm を含む) では NR-8 の列の番號が使はれることに注意。ここで ’*’ は ’add 8’ といふ意味になる。つまり Blue が 12 に、DarkGray が 8 になる。

Note:
カラーターミナルによつては、色名を使ふと閒違つた色で表示される場合もあることに注意。

色をなしにするのに "NONE" も使へる。

Normal グループに對して "ctermfg" や "ctermbg" を設定すると、これらはハイライトされないテキストに對する色になる。例:

:highlight Normal ctermfg=grey ctermbg=darkblue

Normal グループに對して "ctermbg" を設定すると、その色が認識されてかつ ’background’ が明示的に設定されてゐないといふ條件の下で、オプション ’background’ が自動的に調整される。これによつて ’background’ に依存するハイライトグループが變更される!そのため、まづ Normal に對する色を設定し、それから他の色を設定するべきである。

カラースキーム使用時に ’background’ を變更するとカラースキームが再讀み込みされる。そして Normal を含む全ての色がリセットされる。これが嫌なら最初に變數 "g:colors_name" を削除すること。

Normal グループの "ctermfg" や "ctermbg" を變更した場合、Vim 終了時にその色をリセットする必要がある。これは termcap エントリ "op" |t_op| を使つてなされる。リセットがうまくいかない場合は .vimrc 中で ’t_op’ を設定してみること。 Vim が通常の文字色と背景色を知つてゐる場合、色名として "fg" と "bg" を使用できる。これは Normal グループの色と MS-DOS コンソールの色を設定しないと使へない。例へば反轉表示をするには:

:highlight Visual ctermfg=bg ctermbg=fg

Note:
このコマンドを實行した時點で有效な色が使はれることに注意。この後で Normal グループを變更しても "fg" と "bg" は調整されない。

3. highlight コマンドの引數 (GUI 用)

gui={attr-list}

これらは GUI モードで使はれる屬性を設定する。說明は |attr-list| を參照。

ここで "bold" を設定しても太字のフォントを使つてもよい。どちらも同じ效果を持つ。

"Normal" グループに對する屬性は無視される。

font={font-name}

font-name は Vim を實行してゐるシステム上で使はれるフォント名である。X11 ではこれは複雜な名前になる。例へば:

font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1

フォント名 "NONE" を使ふとデフォルトのフォントに戾る。"Normal" グループに對してフォントを設定すると、これがデフォルトフォントになる (オプション ’guifont’ が變更されるまでは; 最後に設定したものが使はれる)。 以下のものは Motif と Athena 上でのみ動作し、他の GUI 上では利用できない: "Menu" グループに對してフォントを設定すると、メニューが變更される。"Tooltip" グループに對してフォントを設定すると、ツールチップが變更される。 Menu 用と Tooltip 用を除く全てのフォントのサイズがデフォルトフォントのサイズと同じでなければならない。さうでないと再描畫の際に問題が發生する。 名前にスペースや特殊文字を含むフォントを使ふ場合、名前をシングルクォートでくくる。このためシングルクォートを名前に含めることはできない。

例:

:hi comment font='Monospace 10'
guifg={color-name} または
guibg={color-name} または
guisp={color-name}

guifg は文字色、guibg は背景色、guisp は波線および取り消し線の色を指定する。これらは GUI で使用される。

いくつか特別な名前がある:

NONEno color (透明)
bg通常の背景色を使ふ
background通常の背景色を使ふ
fg通常の文字色を使ふ
foreground通常の文字色を使ふ

名前にスペースや特殊文字を含む色を使ふ場合、名前をシングルクォートでくくる。このためシングルクォートを名前に含めることはできない。

例:

:hi comment guifg='salmon pink'

推奬されてゐる色名 (これらはほとんどのシステムで利用可能である)

RedLightRedDarkRed
GreenLightGreenDarkGreenSeaGreen
BlueLightBlueDarkBlueSlateBlue
CyanLightCyanDarkCyan
MagentaLightMagenta DarkMagenta
YellowLightYellowBrownDarkYellow
GrayLightGrayDarkGray
BlackWhite
OrangePurpleViolet

Win32 と MacVim GUI バージョンでは他にもシステムカラーが利用できる。|win32-colors| と |macvim-colors| を參照。

RGB値によつて色を指定することもできる。

フォーマットは "#rrggbb"、ここで

"rr"Red 値
"gg"Green 値
"bb"Blue 値

これらの値は 16 進であり、範圍は "00" から "ff"。例:

:highlight Comment guifg=#11f0c3 guibg=#ff00ff

以下はデフォルトのハイライトグループである。これらのグループはデフォルトでオプション ’highlight’ によつて使はれる。ただしハイライトは ’background’ の値に依存することに注意。":highlight" コマンドで現在の設定を知ることができる。

ColorColumn

colorcolumn’ で設定された列の表示に使はれる

Conceal

Conceal されたテキストの代はりに表示される代替文字の表示に使はれる (’conceallevel’ 參照)

Cursor

カーソル下の文字

lCursor

|language-mapping| が使用されてゐるときのカーソルの下の文字 (’guicursor’ を參照)

CursorIM

Cursor と同じだが、IME モードにゐるとき使はれる |CursorIM|。

CursorColumn

cursorcolumn’ がオンになつてゐるときのカーソルがある畫面上の桁

CursorLine

cursorline’ がオンになつてゐるときのカーソルがある畫面上の行

Directory

ディレクトリ名 (とリストにある特別な名前)

DiffAdd

差分モード: 追加された行 |diff.txt|

DiffChange

差分モード: 變更された行 |diff.txt|

DiffDelete

差分モード: 削除された行 |diff.txt|

DiffText

差分モード: 變更された行中の變更されたテキスト |diff.txt|

EndOfBuffer

バッファ中で最終行以降の領域を埋めるための行 (~)。標準では、|hl-NonText| のやうにハイライトされる。

ErrorMsg

コマンドラインに現れるエラーメッセージ

VertSplit

垂直分割したウィンドウの區切りとなる桁

Folded

閉ぢた折り疊みの行

FoldColumn

foldcolumn

SignColumn

目印 |signs| が表示される行。

IncSearch

incsearch’ のハイライト; ":s///c" で置換されたテキストにも使はれる。

LineNr

":number" と ":#" コマンドの行番號。’number’ オプションか ’relativenumber’ オプションが設定されてゐるときにはその表示にも使はれる。 relativenumber’ オプションが設定されてゐるときのカーソル行の上の行番號。 relativenumber’ オプションが設定されてゐるときのカーソル行の下の行番號。

CursorLineNr

LineNr と同じだが ’cursorline’ が設定され、’cursorlineopt’ が "number" または "both" に設定されるか、"relativenumber" が設定されてゐるときに現在行に使はれます。

MatchParen

カーソル下の文字、または直後の文字が括弧であるとき、その文字と對應する括弧に使はれる。|pi_paren.txt|

ModeMsg

showmode’ のメッセージ (例. "‘-- INSERT --’")

MoreMsg

|more-prompt|

NonText

ウィンドウの端の ’@’ と ’showbreak’ で設定された文字など、實際のテキストには存在しない文字 (例. 全角文字が行末に收まらないとき ">" が表示される)。

Normal

通常のテキスト

Pmenu

ポップアップメニュー: 通常の項目。

PmenuSel

ポップアップメニュー: 選擇されてゐる項目。

PmenuSbar

ポップアップメニュー: スクロールバー。

PmenuThumb

ポップアップメニュー: スクロールバーのつまみ部分。

Question

ヒットエンタープロンプト |hit-enter| と yes/no クエスチョン

QuickFixLine

quickfix ウィンドウ內の現在の |quickfix| 項目

Search

最後に檢索した語のハイライト (’hlsearch’) を參照。强調されるべき同樣の項目にも使用される。

SpecialKey

":map" でリストされるメタキーと特別なキー。テキスト中の unprintable な文字を表示するのにも使はれる。一般に: 實際とは異なる文字で表示されるテキスト

SpellBad

スペルチェッカに認識されない單語。|spell| これは他のハイライトと同時に組み合はせられる。

SpellCap

大文字で始まるべき單語。|spell| これは他のハイライトと同時に組み合はせられる。

SpellLocal

スペルチェッカによつて他の地域で使はれると判斷される單語。|spell| これは他のハイライトと同時に組み合はせられる。

SpellRare

スペルチェッカによつてまず使はないと判斷される單語。|spell| これは他のハイライトと同時に組み合はせられる。

StatusLine

ウィンドウのカレントウィンドウのステータスライン

StatusLineNC

ウィンドウの非カレントウィンドウのステータスライン

Note:
これが "StatusLine" に等しい場合、カレントウィンドウのステータスラインに "^^^" が使はれる。

StatusLineTerm

もしもそれが |terminal| ウィンドウの場合、カレントウィンドウのステータスライン。

StatusLineTermNC

|terminal| の非カレントウィンドウのステータスライン。

TabLine

タブページの行の、アクティブでないタブページのラベル

TabLineFill

タブページの行の、ラベルがない部分

TabLineSel

タブページの行の、アクティブなタブページのラベル

Terminal

|terminal| ウィンドウ (|terminal-size-color| を參照)

Title

":set all"、":autocmd" などによる出力のタイトル。

Visual

ビジュアルモード選擇

VisualNOS

vim が "Not Owning the Selection" のときのビジュアルモード選擇。これをサポートしてゐるのは X11 GUI |gui-x11| と |xterm-clipboard| のみ。

WarningMsg

警告メッセージ

WildMenu

wildmenu’ 補完における現在の候補

statusline’ 構文によつてステータスラインとルーラー (’rulerformat’ によつて) 中で 9 個のハイライトが使へるやうになつてゐる。その名前は User1 から User9 である。

GUI 使用時には、これらのグループを使つてメニューやスクロールバー、ツールチップの色を設定することができる。これらにデフォルト値はない。これは Win32 では利用できない。ここでは highlight の引數のうち font, guibg, guifg の 3 つだけが效果を持つ。

Menu

メニューのフォント、文字、背景。ツールバーにも使はれる。使用可能な highlight の引數: font, guibg, guifg.

Note:
Motif と Athena では ’guifontset’ が空かどうかにかかはらず、常に引數 font で實際のフォントセットを指定する。そしてそれが現在の |:language| に結び付けられる。

Scrollbar

メインウィンドウのスクロールバーの文字と背景。使用可能な highlight の引數: guibg, guifg.

Tooltip

ツールチップのフォント、文字、背景。使用可能な highlight の引數: font, guibg, guifg.

Note:
Motif と Athena では ’guifontset’ が空かどうかにかかはらず、常に引數 font で實際のフォントセットを指定する。そしてそれが現在の |:language| に結び付けられる。

14. グループのリンク

複數の構文グループに對して同じハイライトを適用させるには、兩方のグループから 1 つの强調グループにリンクを作り、リンク先に對して色屬性を與へると簡單である。

リンクを作るには:

:hi[ghlight][!] [default] link {from-group} {to-group}

リンクを削除するには:

:hi[ghlight][!] [default] link {from-group} NONE

Note:

引數 [default] によつてグループに對するデフォルトのハイライトを設定することができる。そのグループに對して既にハイライトが指定されてゐる場合、このコマンドは無視される。既にリンクが存在する場合も同樣。

[default] は、そのハイライト設定をあとから上書きさせるために使はれる。例へば C 構文ファイルは次の行を含んでゐる:

:highlight default link cComment Comment

この設定を變更し、C コメントに對して Question のハイライトをつけたい場合、次の行を .vimrc に加へる:

:highlight link cComment Question

"default" をつけないと、.vimrc より C 構文ファイルの方があとに讀み込まれるため、.vimrc の設定を上書きしてしまふ。

15. 構文の消去

カレントバッファに對する構文設定を消去したいときはこのコマンドを使ふ:

:syntax clear

このコマンドは、構文ハイライトをオフにしたいときや他の構文を適用したいときに使ふ。通常、これを構文ファイル內で行ふ必要はない。なぜなら、構文ファイルを讀み込む自動コマンドによつて構文がクリアされる。 また、このコマンドは變數 "b:current_syntax" を削除する。このコマンドの實行後にはすべての構文がなくなるからである。

カレントバッファに對する特定の構文グループを消去するには:

:syntax clear {group-name} ..

これは {group-name} に對する全てのパターンとキーワードを消去する。

カレントバッファに對する特定の構文グループリストを消去するには:

:syntax clear @{grouplist-name} ..

これは {grouplist-name} の中身を空リストにセットする。

全てのバッファに對して構文ハイライトを無效にしたいときは、構文ファイルを讀み込む自動コマンドを削除する必要がある:

:syntax off

このコマンドが實際に行ふことは次のコマンドを實行するのと同じである:

:source $VIMRUNTIME/syntax/nosyntax.vim

詳細は "nosyntax.vim" を參照。これが正常に機能するためには $VIMRUNTIME が正しく設定されてゐる必要がある。|$VIMRUNTIME| を參照。

色を變へたため、色がごちゃごちゃになつてしまつたときは、次のコマンドを使ふとデフォルトに戾る:

:syntax reset

少々正しくない名前だが、どんなシンタックス項目もリセットせず、ただハイライトのみに影響する。

これはオプション ’highlight’ に對する色は變更しない。

Note:
ユーザーのvimrcファイル中で設定した構文色もVimのデフォルト値に戾ることに注意。

Note:
カラースキームを使つてゐる場合、カラースキームによつて定義された色は失はれることに注意。

このコマンドが實際に行ふことは次と同じ:

let g:syntax_cmd = "reset"
runtime! syntax/syncolor.vim

Note:
ここでオプション ’runtimepath’ が使はれてゐることに注意。

構文ハイライトに別の色を使ふには、色を設定する Vim script を作ればよい。そのファイルを ’runtimepath’ 中 (’runtimepath’ は $VIMRUNTIME を含む) のディレクトリに置くと、その設定がデフォルトの色設定を上書きする。かうして ":syntax reset" コマンドを實行すると、それらの色が有效になる。

Unix では ~/.vim/after/syntax/syncolor.vim ファイルを使ふとよい。例:

if &background == "light"
  highlight comment ctermfg=darkgreen guifg=darkgreen
else
  highlight comment ctermfg=green guifg=green
endif

この syncolor.vim が "syntax on" を實行しないこと、また、オプション ’background’ を設定したりコマンド "colorscheme" を實行しないやうに確認すること。もしこれらを實行すると無限ループに陷つてしまふ。

Note:
カラースキームを使用すると、ユーザー定義の色が使はれるのか、それともカラースキームで定義された色が使はれるのかわからなくなる場合があることに注意。これはカラースキームファイルに依存する。|:colorscheme| を參照。

syntax/syncolor.vim ファイルが讀み込まれると、變數 "syntax_cmd" に次の 3 つの値のどれかがセットされる:

"on"":syntax on" コマンド。ハイライト色が上書きされるがリンクはそのまま。
"enable"":syntax enable" コマンド。まだハイライトが定義されてゐないグループに對して色を定義するだけ。":syntax default" を使ふこと。
"reset"":syntax reset" コマンドまたはカラースキームを讀み込む。全ての色を定義する。
"skip"色を定義しない。’runtimepath’ で前にある syncolor.vim ファイルが既にデフォルト設定をセットしてゐるとき、そのデフォルト設定をスキップするために使はれる。

16. 函數名などのハイライト

ファイル中の全てのタグ (函數名など) をハイライトするには、次のマッピングを使ふとよい。

<F11> ‘--tags.vim ファイルを生成し、タグをハイライトする。
<F12> ‘--’ 既存の tags.vim ファイルをもとにハイライトする。
:map <F11>  :sp tags<CR>:%s/^\([^     :]*:\)\=\([^    ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12>
:map <F12>  :so tags.vim<CR>

警告:
tags ファイルが大きくなるほどこの操作は遲くなり、消費するメモリ量も多くなる。

typedef, union, struct だけをハイライトすることもできる。そのためには Exuberant ctags (http://ctags.sf.net で入手可能) が必要である。

以下をあなたの Makefile に加へる:

# 型用のハイライトファイルを作成する。Exuberant ctags と awk が必要
types: types.vim
types.vim: *.[ch]
        ctags --c-kinds=gstu -o- *.[ch] |\
                awk 'BEGIN{printf("syntax keyword Type\t")}\
                        {printf("%s ", $$1)}END{print ""}' > $@

そして以下を .vimrc に加へる:

" load the types.vim highlighting file, if it exists
autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim'
autocmd BufRead,BufNewFile *.[ch] if filereadable(fname)
autocmd BufRead,BufNewFile *.[ch]   exe 'so ' . fname
autocmd BufRead,BufNewFile *.[ch] endif

17. ウィンドウローカル構文

通常は同じバッファを表示するすべてのウィンドウは同じ構文設定を共有する。しかしながら、特定のウィンドウだけ別の構文設定を使用することも可能である。例へば 1 つのウィンドウで LaTeX のソースを普通に表示して、別のウィンドウで異なる表示をする (文字を隱したり太字や斜字體で表示したりする) ことが可能である。その場合は ’scrollbind’ オプションを使ふと便利である。

同じバッファを表示してゐるウィンドウが複數あつて、現在のウィンドウの構文だけを "foo" に設定するには次のやうにする:

:ownsyntax foo

"w:current_syntax" 變數が "foo" に設定される。"b:current_syntax" 變數の値は變更されない。"b:current_syntax" は構文ファイルによつて變更されるが、"b:current_syntax" を一時的に保存・復元することで値が變はらないやうになつてゐる。構文ファイルによつて設定された値が "w:current_syntax" に代入される。

Note:
これは ’spell’, ’spellcapcheck’ と ’spellfile’ オプションをリセットする。

ウィンドウの獨自構文が定義されると、同じバッファの他のウィンドウで實行された構文コマンド (:syntax clear を含む) が影響しなくなる。逆に、そのウィンドウで實行された構文コマンドも他のウィンドウには影響しなくなる。

獨自構文を持つたウィンドウは他のバッファを讀み込むかファイルを再讀み込みすることで通常の動作に戾る。ウィンドウを分割したときは、新しいウィンドウは元々の構文を使ふ。

18. カラー對應 xterm

ほとんどのカラー對應 xterm は 8 色しか持たない。デフォルト設定で色がつかない場合は以下を .vimrcに加へれば正常に色がつくはずである:

:if &term =~ "xterm"
:  if has("terminfo")
:    set t_Co=8
:    set t_Sf=<Esc>[3%p1%dm
:    set t_Sb=<Esc>[4%p1%dm
:  else
:    set t_Co=8
:    set t_Sf=<Esc>[3%dm
:    set t_Sb=<Esc>[4%dm
:  endif
:endif

[<Esc> はエスケープ文字そのもの。CTRL-V <Esc> とタイプして入力する]

最初の "if" を自分のターミナル名にマッチするやうに變更する必要があるかもしれない。例: "xterm" でなく "dtterm"。

Note:
これらの設定は ":syntax on" の前に行ふこと。さうでないと色がをかしくなつてしまふ。

上の設定は xiterm と rxvt でも動作するやうに注意されてゐる。しかし rxvt で 16 色を使ふ場合には terminfo を設定しなければならない:

:set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm
:set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm

色設定をテストするためのファイルが Vim ディストリビューションに入つてゐる。これを使ふには次のコマンドを實行する:

:runtime syntax/colortest.vim

xterm のあるバージョン (と linux コンソールのやうなターミナル) は、たとへ色數が 8 に定義されてゐても、より明るい文字色を出力することができる。そのため ’t_Co’ が 8 のとき、Vim は明るい文字色に對して "cterm=bold" 屬性をセットする。

16 色以上を使ふには xterm の最新バージョンを入手すること (XFree86 3.3 以降に含まれてゐるはずである)。また、以下の場所でも最新バージョンを入手できる:

http://invisible-island.net/xterm/xterm.html 次にそれを configure するよい方法を示す。これは 88 色を使ひ、termcap-query 機能を有效化する。これによつて Vim が xterm に何色をサポートしてゐるか問ひ合はせることができるやうになる

./configure --disable-bold-color --enable-88-color --enable-tcap-query

もし 8 色しか使へなかつたら xterm のコンパイル設定を確認すること。

(この xterm を UTF-8 エンコーディングで使ふ場合には |UTF8-xterm| も參照)。

以下を .vimrc に加へるとこの xterm で動くはずである (16 色用):

:if has("terminfo")
:  set t_Co=16
:  set t_AB=<Esc>[%?%p1%@{8@}%<%t%p1%@{40@}%+%e%p1%@{92@}%+%;%dm
:  set t_AF=<Esc>[%?%p1%@{8@}%<%t%p1%@{30@}%+%e%p1%@{82@}%+%;%dm
:else
:  set t_Co=16
:  set t_Sf=<Esc>[3%dm
:  set t_Sb=<Esc>[4%dm
:endif

[<Esc> はエスケープ文字そのもの。CTRL-V <Esc> とタイプして入力する]

|+terminfo| なしでは Vim はこれらの設定を認識し、自動的に cterm の 8 色と上の設定を "<Esc>[9%dm" と "<Esc>[10%dm" に變換する。16 色以上も自動的に變換される。

以下の設定が256色用にうまくいくと報告されてゐる:

:set t_AB=<Esc>[48;5;%dm
:set t_AF=<Esc>[38;5;%dm

または單に TERM 環境變數を "xterm-color" または "xterm-16color" にセットし、うまくいくか試してみるとよい。

以下の X resourcesを(~/.Xdefaults ファイルで) 使ひたいかもしれない:

XTerm*color0:                   #000000
XTerm*color1:                   #c00000
XTerm*color2:                   #008000
XTerm*color3:                   #808000
XTerm*color4:                   #0000c0
XTerm*color5:                   #c000c0
XTerm*color6:                   #008080
XTerm*color7:                   #c0c0c0
XTerm*color8:                   #808080
XTerm*color9:                   #ff6060
XTerm*color10:                  #00ff00
XTerm*color11:                  #ffff00
XTerm*color12:                  #8080ff
XTerm*color13:                  #ff40ff
XTerm*color14:                  #00ffff
XTerm*color15:                  #ffffff
Xterm*cursorColor:              Black

Note:
cursorColor にはバグがある。カーソルの色が最後に描畫されたテキストの色になつてしまふといふものである。これは xterm の新しいバージョンを使ふと解決するが、まだ全ての人がそれを使つてゐるわけではない。

これらを卽座に更新するには .Xdefaults ファイルをXオプションデータベースマネージャーに再讀み込みさせる (.Xdefaults を變更したときはこれを行ふ必要がある):

xrdb -merge ~/.Xdefaults

xterm でカーソルを點滅させるには tools/blink.c を見ること。または Thomas Dickey の xterm のパッチレベル 107 以上を使ひ (入手場所は上を參照)、以下のリソースを設定する。

XTerm*cursorBlink:      on
XTerm*cursorOnTime:     400
XTerm*cursorOffTime:    250
XTerm*cursorColor:      White

次の設定は hpterm で (大體) うまく機能する。文字色は 8 色だけサポートしてゐる:

:if has("terminfo")
:  set t_Co=8
:  set t_Sf=<Esc>[&v%p1%dS
:  set t_Sb=<Esc>[&v7S
:else
:  set t_Co=8
:  set t_Sf=<Esc>[&v%dS
:  set t_Sb=<Esc>[&v7S
:endif

[<Esc> はエスケープ文字そのもの。CTRL-V <Esc> とタイプして入力する]

次の設定が Enlightened ターミナルエミュレータまたは Eterm で機能すると報告されてゐる。また、明るい色を表示するのに bold 屬性を使ふ xterm ライクターミナル全てで機能すると思はれる。必要なら前述のやうに ":if" をつけること。

:set t_Co=16
:set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
:set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m

次の設定が TTpro telnet 用にうまくいく。Tera Term Pro は MS-Windows 用のフリーウェア/オープンソースプログラムである。

set t_Co=16
set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm
set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm

また、TTpro の Setup→Window→Full Color が有效になつてゐることと、Setup→Font→Enable Bold が無效になつてゐることを確認すること。

(この情報は John Love-Jensen <eljay@Adobe.COM> によつて提供された)

19. シンタックスが遲い時には

この章はシンタックスファイルを作る人向けである。

もしあなたの作つたシンタックスにより再描畫が遲くなつてしまつたら、ここに書いた方法でそれを速くできるかもしれない。|folding| や ’relativenumber’ といつた機能を有效化すると、それらが干涉して遲くなる場合もある。

Note:
|+profile| 機能付きでコンパイルされた時のみ利用可能である。"huge" 機能付きで Vimをビルドする必要があるかもしれない。

時閒のかかつてゐるシンタックスパターンを發見するために、以下の樣な手順で槪要を得られる:

:syntime on
[ CTRL-L で最低でも一度は再描畫を實行する ]
:syntime report

これにより利用されたシンタックスパターンが、マッチにかかつた時閒の多い順にソートして表示される。

:syntime on

シンタックスにかかる時閒の測定を開始する。測定をするにはシンタックスパターンのマッチに多少のオーバーヘッドが發生する。

:syntime off

シンタックスの計測を終了する。

:syntime clear

全部のカウンタを 0 にし、計測をやり直す。

:syntime report

現在のウィンドウで ":syntime on" してから使用されたシンタックス要素を表示する。出力される內容をちやんと讀むには幅の廣いディスプレイを使つたはうが良い。

リストは總時閒 (TOTAL) でソートされてゐる。リストには以下のカラムからなる:

TOTALパターンのマッチにかかつた總時閒
COUNTパターンが使はれた回數
MATCHパターンが實際にマッチした回數
SLOWESTマッチ 1 回あたりの最長時閒
AVERAGEマッチ 1 回あたりの平均時閒
NAMEシンタックス要素の名前。

Note:
一意な名前ではないことに注意。

PATTERN使用されたパターン

パターンマッチングは多くの可能性を試さなければならないときに遲くなる。パターンにできる限り多くのリテラルテキストを含むことで、パターンが無駄にマッチする可能性を減らすやう試してみると良い。

"\@<=" や "\@<!" 要素を使用する時は、マッチする最大サイズを指定すると現在以降の行の全部の位置でパターンを試すことを避けられる。たとへば要素のマッチするものがリテラルテキストならば、そのテキストのサイズをバイト數で指定すると良い。

"<\@<=span""<span" 中の "span" にマッチする。これは "<" があるかどうか多くの場所でマッチを試みる。(ゆゑに遲くなりやすい)
"<\@1<=span"同じものにマッチするが、"span" の前の 1 バイトだけをチェックする。

Up: 目次   [Index]