構文
Nvim の :help
ページは、生成されており、ソースを tree-sitter-vimdoc パーサーを使って解析しています。
構文強調を使用すると、Vim はテキストの一部を別のフォントや色で表示できます。これらの部分は、特定のキーワードやパターンに一致するテキストである場合があります。Vim は(高速性を保つために)ファイル全体を解析しないため、強調表示には限界があります。字句強調表示と呼ぶ方が適切かもしれませんが、一般的に構文強調表示と呼ばれているため、それに従います。
Vim はすべてのターミナルで構文強調表示をサポートしています。しかし、ほとんどの通常のターミナルの強調表示の可能性は非常に限られているため、GUI バージョンである gvim で最も効果的に機能します。
:syn-enable :syntax-enable :syn-on :syntax-on 構文強調表示はデフォルトで有効になっています。無効にした後(下記参照)再度有効にする必要がある場合は、以下を使用します。
:syntax enable
または
:syntax on
このコマンドが実際に行うのは、コマンドを実行することです。
:source $VIMRUNTIME/syntax/syntax.vim
VIM 環境変数が設定されていない場合、Vim は別の方法でパスを見つけようとします(
$VIMRUNTIME を参照)。通常、これは問題なく機能します。機能しない場合は、Vim のものが配置されているディレクトリに VIM 環境変数を設定してみてください。たとえば、構文ファイルが "/usr/vim/vim82/syntax" ディレクトリにある場合、$VIMRUNTIME を "/usr/vim/vim82" に設定します。これは Vim を起動する前にシェルで行う必要があります。このコマンドは、GUI が実行中であるか、またはすぐに開始される場合に、
menu.vim スクリプトも読み込みます。
注意: MS-Windows の構文ファイルには、
<CR>
<NL>
で終わる行があります。Unix のファイルは
<NL>
で終わります。これは、システムに適した種類のファイルを使用する必要があることを意味します。ただし、MS-Windows では、
'fileformats' オプションが空でない場合は、適切な形式が自動的に選択されます。
注意: 反転ビデオ("gvim -fg white -bg black")を使用している場合、
'background' のデフォルト値は、
gvimrc を読み込んだ後の GUI ウィンドウが開くまで設定されません。これにより、誤ったデフォルトの強調表示が使用されることになります。強調表示をオンにする前に
'background' のデフォルト値を設定するには、
gvimrc に ":gui" コマンドを含めます。
:gui " open window and set default for 'background'
:syntax on " start highlighting, use 'background' to set colors
注意: gvimrc で ":gui" を使用すると、"gvim -f" がフォアグラウンドで起動しません!代わりに ":gui -f" を使用してください。
g:syntax_on このコマンドで構文のオン/オフを切り替えることができます。
: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" コマンドは、ファイルを読み込むことによって実装されます。これがどのように機能するかを正確に確認するには、次のファイルを確認してください。
コマンドファイル
: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 も参照してください。
注意: 長い行の表示が遅く、構文強調表示をオフにすると速くなる場合は、
'synmaxcol' オプションをより低い値に設定することを検討してください。
1 つの言語の構文と強調表示のコマンドは、通常、構文ファイルに保存されます。命名規則は "{name}.vim" です。ここで、{name}
は言語の名前、または略語です(ファイルが DOS ファイルシステムで使用される場合に備えて、名前を 8.3 文字に収めるため)。例:c.vim perl.vim java.vim html.vim cpp.vim sh.vim csh.vim
構文ファイルには、vimrc ファイルのように、任意の Ex コマンドを含めることができます。しかし、特定の言語のコマンドのみが含まれるという考えです。言語が別の言語のスーパーセットである場合、他の言語を含めることができます。たとえば、cpp.vim ファイルは c.vim ファイルを含めることができます。
:so $VIMRUNTIME/syntax/c.vim
.vim ファイルは、通常、自動コマンドで読み込まれます。例:
:au Syntax c runtime! syntax/c.vim
:au Syntax cpp runtime! syntax/cpp.vim
これらのコマンドは、通常、$VIMRUNTIME/syntax/synload.vim ファイルにあります。
独自の構文ファイルを作成し、":syntax enable" で Vim がこれらを自動的に使用するようにするには、以下を実行します。
1. ユーザランタイムディレクトリを作成します。通常、
'runtimepath' オプションの最初の項目を使用します。Unix の例
mkdir ~/.config/nvim
2. そこに "syntax" というディレクトリを作成します。Unix の場合
mkdir ~/.config/nvim/syntax
3. Vim の構文ファイルを作成します。または、インターネットからダウンロードします。次に、構文ディレクトリに書き込みます。たとえば、「mine」構文の場合
:w ~/.config/nvim/syntax/mine.vim
これで、構文ファイルを手動で使用できるようになりました。
:set syntax=mine
これを使用するために Vim を終了する必要はありません。
多数のユーザがいるシステムをセットアップしていて、各ユーザが同じ構文ファイルを追加したくない場合は、
'runtimepath' から別のディレクトリを使用できます。
既存の構文ファイルにほぼ満足しているが、いくつかの項目を追加したり、強調表示を変更したりする場合は、次の手順に従います。
2. そこに "after/syntax" というディレクトリを作成します。Unix の場合
mkdir -p ~/.config/nvim/after/syntax
3. 使用するコマンドを含む Vim スクリプトを作成します。たとえば、C 構文の色を変更する場合
highlight cComment ctermfg=Green guifg=Green
4. そのファイルを "after/syntax" ディレクトリに書き込みます。構文の名前を使用し、".vim" を追加します。C 構文の場合
:w ~/.config/nvim/after/syntax/c.vim
以上です。次回 C ファイルを編集するときは、コメントの色が異なります。Vim を再起動する必要すらありません。
複数のファイルがある場合は、ファイルタイプをディレクトリ名として使用できます。このディレクトリ内のすべての "*.vim" ファイルが使用されます。例:~/.config/nvim/after/syntax/c/one.vim ~/.config/nvim/after/syntax/c/two.vim
配布された構文ファイルが気に入らない場合、または新しいバージョンをダウンロードした場合は、上記の
mysyntaxfile と同じ手順に従います。
'runtimepath' の早いディレクトリに構文ファイルを書き込むようにしてください。Vim は、b:current_syntax を設定すると仮定して、最初に見つかった構文ファイルのみを読み込みます。
構文グループ名は、同じ種類のものを一致させる構文項目に使用されます。これらは、色を指定する強調表示グループにリンクされます。構文グループ名は、色または属性自体を指定しません。
強調表示または構文グループの名前は、ASCII 文字、数字、アンダースコア、ドット、ハイフン、または
@
で構成されている必要があります。正規表現としては、
[a-zA-Z0-9_.@-]*
です。グループ名の最大長は約 200 バイトです。
E1249
各ユーザが好みの色のセットを選択できるようにするには、多くの言語に共通する強調表示グループの推奨名が必要です。これらは推奨されるグループ名です(構文強調表示が適切に機能する場合、「Ignore」を除いて、実際の色が表示されます)。
Comment あらゆるコメント
Constant あらゆる定数 String 文字列定数:「これは文字列です」 Character 文字定数:'c'、'\n' Number 数値定数:234、0xff Boolean ブール定数:TRUE、false Float 浮動小数点定数:2.3e10
Identifier 変数名 Function 関数名(クラスのメソッドも含む)
Statement あらゆる文 Conditional if、then、else、endif、switch など。Repeat for、do、while など。Label case、default など。Operator "sizeof"、"+"、"*" など。Keyword その他のキーワード Exception try、catch、throw
PreProc ジェネリックプリプロセッサ Include プリプロセッサ #include Define プリプロセッサ #define Macro Define と同じ PreCondit プリプロセッサ #if、#else、#endif など。
Type int、long、char など。StorageClass static、register、volatile など。Structure struct、union、enum など。Typedef typedef
Special あらゆる特殊記号 SpecialChar 定数内の特殊文字 Tag これに CTRL-]
を使用できます。Delimiter 注意が必要な文字 SpecialComment コメント内の特殊なもの Debug デバッグステートメント
下線付きの目立つテキスト、HTML リンク
Error あらゆる誤った構成
Todo 特に注意が必要なもの。主にキーワード TODO FIXME および XXX
Added diff で追加された行 Changed diff で変更された行 Removed diff で削除された行
アスタリスク(*)が付いている名前は推奨されるグループです。その他はマイナーグループです。推奨されるグループの場合、「syntax.vim」ファイルにはデフォルトの強調表示が含まれています。マイナーグループは推奨されるグループにリンクされているため、同じ強調表示になります。「syntax.vim」ファイルを読み込んだ後に ":highlight" コマンドを使用することで、これらのデフォルトを上書きできます。
強調表示グループ名は、大文字と小文字を区別しないことに注意してください。「String」と「string」は同じグループに使用できます。
次の名前は予約されており、グループ名として使用できません:NONE ALL ALLBUT contains contained
これは、":syntax enable" コマンドが発行されたときに発生する詳細を説明します。Vim が初期化されると、ランタイムファイルが配置されている場所を調べます。これは、ここでは変数
$VIMRUNTIME として使用されます。
":syntax enable" と ":syntax on" は、次のことを行います。
ソース $VIMRUNTIME/syntax/syntax.vim | +- $VIMRUNTIME/syntax/nosyntax.vim を読み込んで古いシンタックスをクリアする | +-
'runtimepath' の最初の syntax/synload.vim を読み込む | | | +-
'syntax' オプションが設定されたときに、適切なシンタックスファイルをロードするシンタックスの自動コマンドをセットアップする。
synload-1 | | | +-
mysyntaxfile 変数から、ユーザーのオプションファイルを読み込む。 | これは Vim 5.x との後方互換性のためだけです。
synload-2 | +- ":filetype on" を実行する。これは ":runtime! filetype.vim" を実行します。これにより、見つかった filetype.vim ファイルが読み込まれます。常に $VIMRUNTIME/filetype.vim が読み込まれるべきで、これは以下を行います。 | | | +- サフィックスに基づいて、
'filetype' オプションを設定する自動コマンドをインストールする | | これが、既知のファイルタイプに対するファイル名とファイルタイプの関連付けが行われる場所です。
synload-3 | | | +-
myfiletypefile から、ユーザーのオプションファイルを読み込む | | 変数。これは Vim 5.x との後方互換性のためだけです。 | |
synload-4 | | | +- まだファイルタイプが検出されていない場合に scripts.vim を読み込む自動コマンドを 1 つインストールする。
synload-5 | | | +- $VIMRUNTIME/menu.vim を読み込み、Syntax メニューをセットアップする。
menu.vim | +- ファイルタイプが検出されたときに
'syntax' オプションを設定する FileType 自動コマンドをインストールする。
synload-6 | +- すでにロードされている各バッファに対してシンタックスハイライトを開始するシンタックス自動コマンドを実行する。
ファイルをロードすると、Vim は次のようにして関連するシンタックスファイルを検索します。
ファイルをロードすると、BufReadPost 自動コマンドがトリガーされます。 | +-
synload-3 (既知のファイルタイプ) または
synload-4 (ユーザーのファイルタイプ) の自動コマンドのいずれかに一致する場合、
'filetype' オプションがファイルタイプに設定されます。 | +-
synload-5 の自動コマンドがトリガーされます。まだファイルタイプが見つかっていない場合、
'runtimepath' で scripts.vim が検索されます。これは常に $VIMRUNTIME/scripts.vim を読み込む必要があり、以下を行います。 | | | +-
myscriptsfile から、ユーザーのオプションファイルを読み込む | | 変数。これは Vim 5.x との後方互換性のためだけです。 | | | +- ファイルタイプがまだ不明な場合は、ファイルの内容を確認します。 | | また、"getline(1) =~ pattern" のようなチェックを行い、ファイルタイプを認識できるかどうかを確認し、
'filetype' を設定します。 | +- ファイルタイプが決定され、
'filetype' が設定された場合、これにより、上記の FileType 自動コマンド
synload-6 がトリガーされます。これにより、
'syntax' が決定されたファイルタイプに設定されます。 | +- 上記で
'syntax' オプションが設定されると、これにより
synload-1 (および
synload-2) の自動コマンドがトリガーされます。これにより、
'runtimepath' で次のコマンドを使用してメインのシンタックスファイルが見つかります。 | runtime! syntax/<name>.vim | +- 他のユーザーがインストールした FileType または Syntax 自動コマンドがトリガーされます。これは、特定のシンタックスのハイライトを変更するために使用できます。
古い HTML コンバーターは Lua バージョンに置き換えられ、ドキュメントは
:TOhtml に移動しました。
b:current_syntax 変数 Vim は、ロードされたシンタックスの名前を "b:current_syntax" 変数に格納します。アクティブなシンタックスに応じて他の設定をロードしたい場合、これを使用できます。例
:au BufReadPost * if b:current_syntax == "csh"
:au BufReadPost * do-some-things
:au BufReadPost * endif
ABEL のハイライトには、ユーザー定義のオプションがいくつか用意されています。それらを有効にするには、それぞれの変数に任意の値が代入します。例
:let abel_obsolete_ok=1
それらを無効にするには、":unlet" を使用します。例
:unlet abel_obsolete_ok
変数のハイライト
abel_obsolete_ok 廃止されたキーワードはエラーではなくステートメントである abel_cpp_comments_illegal '//' をインラインコメントリーダーとして解釈しない
ADA
ant シンタックスファイルは、デフォルトで javascript と python のシンタックスハイライトを提供します。他のスクリプト言語のシンタックスハイライトは、AntSyntaxScript() 関数を使用してインストールできます。この関数は、最初の引数としてタグ名、2 番目の引数としてスクリプトのシンタックスファイル名を受け取ります。例
:call AntSyntaxScript('perl', 'perl.vim')
次の ant コードに対して perl シンタックスハイライトをインストールします。
<script language = 'perl'><![CDATA[
# everything inside is highlighted as perl
]]></script>
スクリプト言語を永続的にインストールするには、
mysyntaxfile-add を参照してください。
apache シンタックスファイルは、Apache HTTP サーバーバージョン 2.2.3 のシンタックスハイライトを提供します。
"*.i" に一致するファイルは Progress またはアセンブリである可能性があります。自動検出が機能しない場合、または Progress をまったく編集しない場合は、スタートアップ vimrc でこれを使用します。
:let filetype_i = "asm"
"asm" を使用するアセンブリの種類に置き換えます。
同じファイル名拡張子を使用するアセンブリ言語には多くの種類があります。したがって、自分で種類を選択するか、Vim が認識するアセンブリファイルに行を追加する必要があります。現在、これらのシンタックスファイルが含まれています。 asm GNU アセンブリ (デフォルト) asm68k Motorola 680x0 アセンブリ asmh8300 Hitachi H-8300 バージョンの GNU アセンブリ ia64 Intel Itanium 64 fasm フラットアセンブリ (
https://flatassembler.net) masm Microsoft アセンブリ (おそらく 80x86 のすべてで動作します) nasm Netwide アセンブリ tasm Turbo アセンブリ (Pentium までの 80x86 オペコードと MMX) pic PIC アセンブリ (現在 PIC16F84 用)
最も柔軟な方法は、アセンブリファイルに次の行を追加することです。
asmsyntax=nasm
"nasm" を実際のアセンブリシンタックスの名前に置き換えます。この行は、ファイルの最初の 5 行のいずれかである必要があります。このテキストの直前または直後に空白以外のテキストがあってはなりません。asmsyntax=foo の指定は
modeline で ft=foo を設定することと同じであり、2 つの設定間で競合が発生した場合、modeline の設定が優先されることに注意してください (特に、modeline に ft=asm がある場合、asmsyntax に何が指定されていても GNU シンタックスハイライトが表示されます)。
特定のバッファのシンタックスタイプは、b:asmsyntax 変数を設定することでいつでも上書きできます。
:let b:asmsyntax = "nasm"
b:asmsyntax が自動的または手動で設定されていない場合、グローバル変数 asmsyntax の値が使用されます。これはデフォルトのアセンブリ言語と見なすことができます。
:let asmsyntax = "nasm"
最後の手段として、何も定義されていない場合は、"asm" シンタックスが使用されます。
Netwide アセンブラー (nasm.vim) のオプションのハイライト
機能を有効にするには
:let {variable}=1|set syntax=nasm
機能を無効にするには
:unlet {variable} |set syntax=nasm
変数のハイライト
nasm_loose_syntax 非公式のパーサーで許可されたシンタックスをエラーとしない (パーサーに依存; 推奨されません) nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない nasm_no_warn 潜在的に危険なシンタックスを ToDo としない
設定
次の変数は、特定のシンタックスハイライト機能を制御します。これらは .vimrc に追加できます。
".astro" ファイルに対して TypeScript および TSX を有効にするには (デフォルト "disable")
let g:astro_typescript = "enable"
".astro" ファイルに対して Stylus を有効にするには (デフォルト "disable")
let g:astro_stylus = "enable"
注: astro ファイルで stylus をサポートするには、外部プラグインをインストールする必要があります。
*.asp
および
*.asa
ファイルは、Perl スクリプトまたは Visual Basic スクリプトのどちらかである可能性があります。これを検出するのは難しいため、使用しているものを Vim に伝えるために 2 つのグローバル変数を設定できます。Perl スクリプトの場合は、次を使用します。
:let g:filetype_asa = "aspperl"
:let g:filetype_asp = "aspperl"
Visual Basic の場合は、次を使用します。
:let g:filetype_asa = "aspvbs"
:let g:filetype_asp = "aspvbs"
デフォルトでは、基本的な Asymptote キーワードのみが強調表示されます。拡張されたジオメトリキーワードを強調表示するには
:let g:asy_syn_plain = 1
3D 構造に関連するキーワードを強調表示するには
:let g:asy_syn_three = 1
デフォルトでは、Asymptote で定義された色 (例: lightblue) が強調表示されます。TeX で定義された色 (例: BlueViolet) を強調表示するには
:let g:asy_syn_texcolors = 1
または Xorg 色 (例: AliceBlue) の場合
:let g:asy_syn_x11colors = 1
baan.vim は、BaanIV リリースから SSA ERP LN までの BaanC のシンタックスサポートを、3GL および 4GL プログラミングの両方で提供します。多数の標準的な定義/定数がサポートされています。
シンタックスの折りたたみは、以下に示されている変数を使用して、さまざまなレベルで有効にできます (
init.vim で設定)。ソースブロックと 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
注: ブロックの折りたたみは、多数の小さな折りたたみになる可能性があります。
:set オプションの
'foldminlines' および
'foldnestmax' を
init.vim で設定するか、.../after/syntax/baan.vim で
:setlocal を使用することをお勧めします (
after-directory を参照)。例:
set foldminlines=5
set foldnestmax=6
Visual Basic と "通常の" BASIC はどちらも拡張子 ".bas" を使用します。どちらを使用するかを検出するために、Vim はファイルの最初の 5 行に文字列 "VB_Name" があるかどうかを確認します。見つからない場合はファイルタイプが "basic" になり、それ以外の場合は "vb" になります。拡張子 ".frm" のファイルは常に Visual Basic として認識されます。
自動検出が機能しない場合や、たとえば FreeBASIC ファイルのみを編集する場合は、スタートアップ vimrc で次を使用します。
:let filetype_bas = "freebasic"
C
c.vim ft-c-syntax
C のハイライトには、いくつかのオプションがあります。有効にするには、対応する変数に任意の値を代入します (ゼロを含む)。例:
:let c_comment_strings = 1
:let c_no_bracket_error = 0
無効にするには、
:unlet
を使用します。例:
:unlet c_comment_strings
値をゼロに設定しても機能しません!
'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" などが含まれます。ただし、たとえば "TRUE" は ANSI 標準に含まれていないため、含まれません。これが紛らわしい場合は、cConstant のハイライトを削除してください。
:hi link cConstant NONE
'{' と '}' が OK な場所でエラーとして強調表示される場合は、cErrInParen と cErrInBracket のハイライトをリセットします。
C ファイルで折りたたみを使用する場合は、
'runtimepath' の "after" ディレクトリにあるファイルに次の行を追加できます。Unix の場合、これは ~/.config/nvim/after/syntax/c.vim になります。
syn sync fromstart
set foldmethod=syntax
C/C++ インタープリター。Ch の構文強調表示は C と似ており、C 構文ファイルに基づいています。C で利用可能なすべての設定については、
c.vim を参照してください。
変数を設定することで、
*.h
ファイルで C または C++ の代わりに Ch 構文を使用するように Vim に指示できます。
:let ch_syntax_for_h = 1
Chill の構文強調表示は C に似ています。利用可能なすべての設定については、
c.vim を参照してください。さらに、以下があります。
chill_space_errors (c_space_errors と同様) chill_comment_string (c_comment_strings と同様) chill_minlines (c_minlines と同様)
ChangeLog は、行の先頭にあるスペースの強調表示をサポートしています。これが気に入らない場合は、vimrc に次の行を追加してください。
let g:changelog_spacing_errors = 0
これは、次に changelog ファイルを編集するときに機能します。"b:changelog_spacing_errors" を使用して、(構文ファイルをロードする前に) バッファーごとにこれを設定することもできます。
使用する強調表示を変更できます。たとえば、スペースをエラーとしてフラグを立てる場合
:hi link ChangelogError Error
または強調表示を回避する場合
:hi link ChangelogError NONE
これはすぐに機能します。
"clojure.core" のパブリック変数の構文強調表示はデフォルトで提供されていますが、
g:clojure_syntax_keywords 変数に追加することで、追加のシンボルを強調表示できます。値は、構文グループ名の
Dictionary で、それぞれに識別子の
List が含まれている必要があります。
let g:clojure_syntax_keywords = {
\ 'clojureMacro': ["defproject", "defcustom"],
\ 'clojureFunc': ["string/join", "string/replace"]
\ }
有効な構文グループ名については、Clojure 構文スクリプトを参照してください。
Clojure の "破棄リーダーマクロ" の基本的な強調表示を有効にするには、この変数を
1
に設定します。
#_(defn foo [x]
(println x))
このオプションでは、積み重ねられた破棄マクロ (例: #_#_
) が正しく強調表示されないことに注意してください。
COBOL の強調表示には、新しい開発の場合とは異なるレガシーコードのニーズがあります。これは、実行されていること (メンテナンス対開発) やその他の要因の違いによるものです。レガシーコードの強調表示を有効にするには、vimrc に次の行を追加します。
:let cobol_legacy_code = 1
再度無効にするには、これを使用します。
:unlet cobol_legacy_code
ColdFusion には独自のバージョンの HTML コメントがあります。ColdFusion コメントの強調表示をオンにするには、スタートアップファイルに次の行を追加します。
:let html_wrong_comments = 1
ColdFusion 構文ファイルは、HTML 構文ファイルに基づいています。
変数のハイライト
cpp_no_cpp11 C++11 標準項目を強調表示しない cpp_no_cpp14 C++14 標準項目を強調表示しない cpp_no_cpp17 C++17 標準項目を強調表示しない cpp_no_cpp20 C++20 標準項目を強調表示しない
これは "csh" という名前のシェルを対象としています。一部のシステムでは、実際には tcsh が使用されることに注意してください。
ファイルが csh か tcsh かを検出するのは非常に困難です。一部のシステムでは、/bin/csh を /bin/tcsh にシンボリックリンクしているため、csh と tcsh を区別することがほぼ不可能です。VIM の推測が間違っている場合は、"filetype_csh" 変数を設定できます。csh を使用する場合:
g:filetype_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" 変数が存在する場合、ファイルタイプは変数の値に設定されます。
CSV ファイルの区切り文字を変更すると、その構文強調表示は変更されたファイルの内容と一致しなくなります。次の変数を unlet する必要があります。
:unlet b:csv_delimiter
その後、ファイルを保存して再度ロードします。
:w
:e
これで、構文エンジンは新しく変更された CSV 区切り文字を決定する必要があります。
Cynlib ファイルは、Cynlib クラスライブラリを使用して C++ を使用したハードウェアモデリングとシミュレーションを可能にする C++ ファイルです。通常、Cynlib ファイルには .cc または .cpp 拡張子が付いているため、通常の 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
"*.w" に一致するファイルは、Progress または cweb の可能性があります。自動検出が機能しない場合、または Progress をまったく編集しない場合は、スタートアップ vimrc で次を使用します。
:let filetype_w = "cweb"
Dart は、モバイル、デスクトップ、Web、およびバックエンドアプリケーションの開発に使用される、オブジェクト指向、型付き、クラス定義、ガベージコレクション言語です。Dart は、C、Java、JavaScript から派生した C ライクな構文を使用し、Smalltalk、Python、Ruby などから採用された機能を備えています。
dart.vim 構文は、Dart ステートメント、予約語、型宣言、ストレージクラス、条件文、ループ、補間された値、およびコメントを検出して強調表示します。Flutter やその他の Dart フレームワークのイディオムはサポートされていません。
変更点、修正点については、以下から issue または pull request を送信してください。
この構文ファイルの主な目的は、freedesktop.org 標準に従って .desktop ファイルと .directory ファイルを強調表示することです:
https://specifications.freedesktop.org/desktop-entry-spec/latest/ X- で始まらない非標準の拡張機能を強調表示するには、次を設定します。
let g:desktop_enable_nonstd = 1
これにより、誤った強調表示が発生する可能性があることに注意してください。KDE で予約されている機能を強調表示するには、次を設定します。
let g:desktop_enable_kde = 1
g:desktop_enable_kde は、指定されていない場合は g:desktop_enable_nonstd に従います。
diff の強調表示は、通常、翻訳されたヘッダーを検出します。ファイルに非常に長い行がある場合、これは遅くなる可能性があります。翻訳を無効にするには、次のようにします。
:let diff_translations = 0
diff-slow も参照してください。
dircolors ユーティリティの強調表示定義には、1 つのオプションがあります。これは、Slackware GNU/Linux ディストリビューションのコマンドバージョンとの互換性を提供するために存在します。これは、ほとんどのバージョンで一般的に無視されるいくつかのキーワードを追加します。ただし、Slackware システムでは、ユーティリティはキーワードを受け入れ、処理に使用します。Slackware キーワードを有効にするには、スタートアップファイルに次の行を追加します。
let dircolors_is_slackware = 1
DocBook ファイルには、SGML と XML の 2 種類があります。使用しているタイプを指定するには、"b:docbk_type" 変数を設定する必要があります。Vim は、タイプを認識できる場合はこれを自動的に行います。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_cmdextversion でサポートする必要がある Windows コマンドインタプリタ拡張機能のセットを選択します。Windows NT (Windows 2000 より前) のバージョンでは、これは値 1 にする必要があります。Windows 2000 以降では、2 にする必要があります。次の行で必要なバージョンを選択します。
:let dosbatch_cmdextversion = 1
この変数が定義されていない場合、Windows 2000 以降をサポートするために、デフォルト値は 2 になります。
オリジナルの MS-DOS では、コメント行を入力する別の方法として、二重コロン (::) を使用するイディオムがサポートされています。このイディオムは、現在の Windows コマンドインタプリタでも使用できますが、( ... ) コマンドブロック内で使用すると問題が発生する可能性があります。これに関する議論は、Stack Overflow で見つけることができます -
Windows コマンドインタプリタでコマンドブロックのコメントに :: イディオムを使用できるようにするには、dosbatch_colons_comment 変数を任意の値に設定します。
:let dosbatch_colons_comment = 1
この変数が設定されている場合、コマンドブロックの最後の行にある :: コメントはエラーとして強調表示されます。
*.btm
ファイルを "dosbatch" タイプ (MS-DOS バッチファイル) として検出するか、"btm" タイプ (4DOS バッチファイル) として検出するかをカバーするオプションがあります。後者がデフォルトで使用されます。次の行で前者を選択できます。
:let g:dosbatch_syntax_for_btm = 1
この変数が未定義または 0 の場合、btm 構文が選択されます。
Doxygen は、特別なドキュメント形式 (Javadoc に似ています) を使用してコードドキュメントを生成します。この構文スクリプトは、c、cpp、idl、および php ファイルに Doxygen の強調表示を追加し、java でも機能するはずです。
Doxygen の書式設定を有効にするには、いくつかの方法があります。明示的に行うことも、ファイルの構文に '.doxygen' を追加してモデルラインで行うこともできます。例:
:set syntax=c.doxygen
または
// vim:syntax=c.doxygen
また、グローバル変数またはバッファローカル変数 load_doxygen_syntax を設定することにより、C、C++、C#、IDL、および PHP ファイルで自動的に行うこともできます。これを行うには、vimrc に次のように追加します。
:let g:load_doxygen_syntax=1
構文の強調表示に影響を与える変数がいくつかあり、これらは非標準の強調表示オプションに関係しています。
変数 デフォルト 効果
g:doxygen_enhanced_color g:doxygen_enhanced_colour 0 Doxygen コメントに非標準の強調表示を使用します。
doxygen_my_rendering 0 HTML の太字、斜体、および html_my_rendering の下線のレンダリングを無効にします。
doxygen_javadoc_autobrief 1 javadoc autobrief の色の強調表示を無効にするには、0 に設定します。
doxygen_end_punctuation '[.]' brief の終了句読符の正規表現一致を設定します。
構成に役立つ可能性があるため、言及する価値のある強調表示グループもいくつかあります。
強調表示 効果
doxygenErrorComment コード、逐語的、またはドットセクションで句読符が欠落している場合の終了コメントの色。doxygenLinkError \link セクションから \endlink が欠落している場合の終了コメントの色。
DTD の構文強調表示は、デフォルトでは大文字と小文字を区別します。大文字と小文字を区別しない強調表示を無効にするには、スタートアップファイルに次の行を追加します。
:let dtd_ignore_case=1
DTD 構文ファイルは、不明なタグをエラーとして強調表示します。これが煩わしい場合は、次を設定してオフにできます。
:let dtd_no_tag_errors=1
dtd.vim 構文ファイルをソースする前。パラメータエンティティ名は、定義では「Type」強調表示グループを使用し、句読点と '%' では「Comment」を使用して強調表示されます。パラメータエンティティインスタンスは、「Constant」強調表示グループを使用し、区切り文字 % と ; では「Type」強調表示グループを使用して強調表示されます。これは、次を設定することでオフにできます。
:let dtd_no_param_entities=1
DTD 構文ファイルは、含まれる dtd を強調表示するために xml.vim によって包含されます。
Eiffel は大文字と小文字を区別しませんが、そのスタイルガイドラインは大文字と小文字を区別し、構文強調表示ファイルはその使用を推奨します。これにより、クラス名を異なる方法で強調表示することもできます。大文字と小文字を区別しない強調表示を無効にする場合は、スタートアップファイルに次の行を追加します。
:let eiffel_ignore_case=1
大文字と小文字は、クラス名とコメントの TODO マークでは依然として重要です。
逆に、さらに厳密なチェックを行うには、次のいずれかの行を追加します。
:let eiffel_strict=1
:let eiffel_pedantic=1
eiffel_strict を設定すると、5 つの事前定義された単語 "Current"、"Void"、"Result"、"Precursor"、および "NONE" の大文字と小文字の不適切な使用のみがキャッチされ、機能名またはクラス名として誤って使用しないように警告します。
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 には、2 つの構文強調表示ファイルがあります。1 つは Euphoria バージョン 3.1.1 用で、これがデフォルトの構文強調表示ファイルであり、もう 1 つは Euphoria バージョン 4.0.5 以降用です。
次のファイル拡張子は、Euphoria ファイルタイプとして自動検出されます。
*.e, *.eu, *.ew, *.ex, *.exu, *.exw
*.E, *.EU, *.EW, *.EX, *.EXU, *.EXW
Euphoria の構文強調表示ファイルを選択するには、
*.e
および
*.E
ファイル拡張子を Euphoria ファイルタイプとして自動検出するために、スタートアップファイルに次の行を追加します。
:let g:filetype_euphoria = "euphoria3"
または
:let g:filetype_euphoria = "euphoria4"
Elixir と Euphoria は
*.ex
ファイル拡張子を共有します。ファイルタイプが g:filetype_euphoria 変数で Euphoria として明示的に設定されている場合、またはファイル内のキーワードに基づいてファイルが Euphoria であると判断された場合、ファイルタイプは Euphoria として設定されます。それ以外の場合、ファイルタイプはデフォルトで Elixir になります。
Erlang は、Ericsson によって開発された関数型プログラミング言語です。次の拡張子を持つファイルは、Erlang ファイルとして認識されます: erl、hrl、yaws。
BIF (組み込み関数) は、デフォルトで強調表示されます。これを無効にするには、vimrc に次の行を記述します。
:let g:erlang_highlight_bifs = 0
いくつかの特別なアトムの強調表示を有効にするには、vimrc にこれを記述します。
:let g:erlang_highlight_special_atoms = 1
Elixir は、スケーラブルで保守可能なアプリケーションを構築するための動的な関数型言語です。
次のファイル拡張子は、Elixir ファイルタイプとして自動検出されます。
*.ex, *.exs, *.eex, *.leex, *.lock
Elixir と Euphoria は
*.ex
ファイル拡張子を共有します。ファイルタイプが g:filetype_euphoria 変数で Euphoria として明示的に設定されている場合、またはファイル内のキーワードに基づいてファイルが Euphoria であると判断された場合、ファイルタイプは Euphoria として設定されます。それ以外の場合、ファイルタイプはデフォルトで Elixir になります。
FlexWiki は、
https://www.flexwiki.com で入手可能な ASP.NET ベースの Wiki パッケージです。
注: このサイトは現在機能していません。Wikipedia では、開発が 2009 年に停止したと記載されています。
FlexWiki 構文の最も一般的な要素には、構文強調表示を使用できます。関連付けられた ftplugin スクリプトは、FlexWiki ページの編集をより便利にするために、いくつかのバッファローカルオプションを設定します。FlexWiki は改行を新しい段落の開始と見なすため、ftplugin は
'tw'=0 (無制限の行長)、
'wrap' (水平スクロールを使用する代わりに長い行を折り返す)、
'linebreak' (画面上の最後の文字ではなく、
'breakat' の文字で折り返す) などを設定します。また、デフォルトで無効になっているいくつかのキーマップも含まれています。
"j" と "k" およびカーソルキーをディスプレイ行単位で上下に移動させるキーマップを有効にする場合は、これを vimrc に追加します。
:let flexwiki_maps = 1
FORMファイルの構文要素の色分けは、J.A.M. Vermaseren著「Symbolic Manipulation with FORM」(CAN、オランダ、1991年)の言語仕様に従い、デフォルトモードのConditional、Number、Statement、Comment、PreProc、Type、Stringを使用します。
デフォルトの色を独自に変更したい場合は、以下の構文グループを再定義する必要があります。
formConditional
formNumber
formStatement
formHeaderStatement
formComment
formPreProc
formDirective
formType
formString
form.vim構文ファイルでは、デフォルトでFORMプリプロセッサコマンドとディレクティブが同じ構文グループで実装されていることに注意してください。
FORMのヘッダーステートメントとプログラム本体のステートメントを区別するための、定義済みの拡張カラーモードが利用可能です。このモードを有効にするには、vimrcファイルに次の変数を定義してください。
:let form_enhanced_color=1
拡張モードでは、暗いgvimディスプレイ用の追加のカラー機能も利用します。ここでは、ステートメントがYellowではなくLightYellowで、条件文が区別しやすいようにLightBlueで色付けされます。
Visual BasicとFORMはどちらも拡張子「.frm」を使用します。どちらを使用するかを検出するために、Vimはファイルの最初の5行に「VB_Name」という文字列があるかどうかをチェックします。見つかった場合は、ファイルタイプは「vb」になり、それ以外の場合は「form」になります。
自動検出がうまくいかない場合や、例えばFORMファイルのみを編集する場合は、スタートアップvimrcで次のように使用してください。
:let filetype_frm = "form"
「*.f」に一致するファイルはFortranまたはForthである可能性があり、「*.fs」に一致するファイルはF#またはForthである可能性があります。自動検出がうまくいかない場合や、F#やFortranをまったく編集しない場合は、スタートアップvimrcで次のように使用してください。
:let filetype_f = "forth"
:let filetype_fs = "forth"
デフォルトの強調表示と方言
VimはFortran 2023(最新の標準)に従って強調表示します。Fortran 2023は以前のバージョン(Fortran 2018、2008、2003、95、90、77、66)のほとんど上位互換であるため、この選択はほとんどのユーザーにとってほとんどの場合適切です。最近のFortran標準でそれぞれ削除または廃止されたと宣言されたいくつかのレガシー構造は、エラーおよびTODO項目として強調表示されます。
構文スクリプトは、Fortranの方言をサポートしなくなりました。変数fortran_dialectは現在、無視されます。コンピュータは現在非常に高速であるため、変数fortran_more_preciseは不要になり、無視されます。
Fortranソースコード形式
Fortranコードは、固定または自由形式のソース形式にすることができます。形式が正しく設定されていない場合、構文強調表示が正しくないことに注意してください。
新しいFortranファイルを作成すると、構文スクリプトは固定ソース形式を想定します。常に自由形式のソース形式を使用する場合は、次のようになります。
:let fortran_free_source=1
常に固定形式のソース形式を使用する場合は、次のようになります。
:let fortran_fixed_source=1
ソースコードの形式が、標準外の方法でファイル拡張子に依存する場合は、ftpluginファイルでfortran_free_sourceを設定するのが最も便利です。ftpluginファイルの詳細については、
ftpluginを参照してください。これは、.vimrcファイルで「syntax on」コマンドの前に「filetype plugin indent on」コマンドが記述されている場合にのみ機能することに注意してください。
既存のFortranファイルを編集する場合、fortran_free_source変数が設定されている場合は自由ソース形式が想定され、fortran_fixed_source変数が設定されている場合は固定ソース形式が想定されます。これらの変数のどちらも設定されていないと仮定します。その場合、構文スクリプトは、ifort、gfortran、Cray、NAG、PathScaleコンパイラに共通の規則(固定ソースの場合は.f、.for、.f77、自由ソースの場合は.f90、.f95、.f03、.f08)を使用してファイル拡張子を調べて、どのソース形式が使用されているかを判断しようとします。.fppおよび.ftnファイル拡張子には、コンパイラによって扱いが異なるため、デフォルトは使用されません。これのどれもうまくいかない場合は、スクリプトはファイルの最初の500行の最初の5列を調べます。自由ソース形式の兆候が検出されない場合、ファイルは固定ソース形式であると想定されます。アルゴリズムは、ほとんどの場合に機能するはずです。500以上の全行コメントで始まるファイルなど、場合によっては、スクリプトがコードを固定形式であると誤って判断する可能性があります。その場合は、最初の25行の最初の5列のどこかから始まる非コメントステートメントを追加し、保存(:w)してから、ファイルを再ロード(:e!)してください。
ベンダー拡張機能
固定形式のFortranでは、最大行長が72文字必要ですが、スクリプトでは、過去30年間に作成されたすべてのコンパイラと同様に、最大行長が80文字許容されます。変数fortran_extended_line_lengthを次のようなコマンドで設定すると、さらに長い132文字の行長が許可されます。
:let fortran_extended_line_length=1
CUDA Fortran拡張機能の追加の強調表示が必要な場合は、変数fortran_CUDAを次のようなコマンドで設定する必要があります。
:let fortran_CUDA=1
一般的で標準外のベンダー提供の組み込み関数の認識を有効にするには、変数fortran_vendor_intrinsicsを次のようなコマンドで設定する必要があります。
:let fortran_vendor_intrinsics=1
Fortranファイル内のタブ
タブはFortran標準では認識されません。タブは固定列境界を必要とする固定形式のFortranソースコードでは適切ではありません。したがって、タブはエラーとしてマークされます。それにもかかわらず、タブの使用を好むプログラマーもいます。Fortranファイルにタブが含まれている場合は、vimrcで変数fortran_have_tabsを次のようなコマンドで設定する必要があります。
:let fortran_have_tabs=1
残念ながら、タブを使用すると、構文ファイルは不適切なマージンを検出できなくなります。
Fortranファイルの構文折りたたみ
変数fortran_foldを.vimrcで次のようなコマンドで設定すると、Vimはfoldmethod=syntaxを使用してファイルを折りたたみます。
:let fortran_fold=1
プログラムユニット、つまりprogramステートメントで始まるメインプログラム、サブルーチン、関数サブプログラム、モジュール、サブモジュール、コメント行のブロック、およびブロックデータユニットの折りたたみ領域を定義するように構文スクリプトに指示します。Block、interface、associate、critical、type definition、change teamの構文も折りたたまれます。変数fortran_fold_conditionalsを次のようなコマンドで設定した場合にも、
:let fortran_fold_conditionals=1
doループ、ifブロック、select case、select type、およびselect rankの構文についても折りたたみ領域が定義されます。折りたたみ領域の定義は、大きなファイルの場合には時間がかかる可能性があることに注意してください。
syntax/fortran.vimスクリプトには、いくつかの行をコメント化またはコメント解除して、(a)標準外のベンダー提供の組み込み関数の一部を認識できるようにし、(b)2008年標準で削除または廃止されたと宣言された機能がTODO項目として強調表示されないようにする方法を説明する組み込みコメントが含まれています。
制限事項
括弧のチェックでは、閉じ括弧が少なすぎることは検出されません。Hollerith文字列は認識されません。Fortran90には予約語がないため、一部のキーワードが誤って強調表示される可能性があります。
FreeBASICファイルは、4つの利用可能な方言(「fb」、「qb」、「fblite」、「deprecated」)ごとに異なる方法で強調表示されます。正しい方言を選択する方法については、
ft-freebasic-pluginを参照してください。
強調表示は、以下の変数を使用してさらに構成できます。
Vimがパターン
fvwmrcまたは
fvwm2rcに一致しないFvwm構成ファイルを認識できるようにするには、システムに適した追加のパターンをmyfiletypes.vimファイルに記述する必要があります。これらのパターンについては、変数「b:fvwm_version」をFvwmのメジャーバージョン番号に設定し、
'filetype'オプションをfvwmに設定する必要があります。
たとえば、/etc/X11/fvwm2/にあるすべてのファイルをFvwm2構成ファイルとしてVimに認識させるには、次を追加します。
:au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 |
\ set filetype=fvwm
GSPページのデフォルトの色付けスタイルは
html.vimで定義され、javaコードの色付け(javaタグ内、またはバックティック間のインライン)は
java.vimで定義されます。
html.vimで定義された次のHTMLグループは、インラインjavaコードを組み込んで強調表示するために再定義されます。
htmlString htmlValue htmlEndTag htmlTag htmlTagN
強調表示は、インラインjavaコードが表示されるほとんどの場所で適切に見えるはずですが、いくつかの特別なケースではそうではない可能性があります。正しく強調表示されないインラインjavaコードがある別のHTMLグループを追加するには、
html.vimから必要な行をコピーし、contains句にgspJavaを追加するだけです。
インラインjavaのバックティックは、見やすくするためにhtmlErrorグループに従って強調表示されます。
groff構文ファイルは
nroff.vimのラッパーです。使用例と構成については、その見出しの下のメモを参照してください。このラッパーの目的は、
modelineまたは個人的なファイルタイプ定義ファイル(
filetype.txtを参照)からファイルタイプを設定することにより、groff構文拡張機能を設定することです。
Haskell構文ファイルは、プレーンなHaskellコードと、リテラシー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
リテラシーHaskellコードの構文強調表示は、リテラシーHaskellコードにTeXマークアップが含まれているかどうかを自動的に推測しようとし、それに応じてTeX構文を強調表示するか、何も強調表示しません。これをグローバルに上書きするには、vimrcに次を記述します。
:let lhs_markup = none
強調表示をまったくしない場合は、または
:let lhs_markup = tex
TeXマークアップを常に強調表示するように強制します。より柔軟にするには、この変数のバッファローカルバージョンを使用することもできます。例えば、
:let b:lhs_markup = tex
特定のバッファに対してTeXの強調表示を強制します。これは、バッファの構文強調表示をオンにするか、ファイルをロードする前に設定する必要があります。
HTMLファイル内のタグのカラーリングスキームは、次のようになっています。
開始タグの <> は、終了タグの </> とは異なる色で表示されます。これは意図的なものです!開始タグには「Function」色が使用され、終了タグには「Identifier」色が使用されます(syntax.vimで、それらがどのように定義されているかを確認してください)。
既知のタグ名はC言語のステートメントと同じように色付けされます。不明なタグ名は、それぞれ <> または </> と同じ色で色付けされるため、エラーを簡単に見つけることができます。
引数(または属性)の名前についても同様であることに注意してください。既知の属性名は、不明な属性名とは異なる色で色付けされます。
一部のHTMLタグは、テキストのレンダリングを変更するために使用されます。次のタグはhtml.vim構文色付けファイルで認識され、通常のテキストの表示方法を変更します:<B>
<I>
<U>
<EM>
<STRONG>
(<EM>
は<I>
のエイリアスとして、<STRONG>
は<B>
のエイリアスとして使用されます)、<H1>
- <H6>
、<HEAD>
、<TITLE>
、および<A>
。ただし、リンクとして使用されている場合(<A href="somefile.html">のようにhrefが含まれている必要がある場合)のみです。
そのようなテキストのレンダリング方法を変更する場合は、次の構文グループを再定義する必要があります。
htmlBold
htmlBoldUnderline
htmlBoldUnderlineItalic
htmlUnderline
htmlUnderlineItalic
htmlItalic
タイトル用のhtmlTitle
見出し用のhtmlH1 - htmlH6
この再定義を機能させるには、最後の2つ(htmlTitleとhtmlH[1-6]、これらはオプション)を除いてすべてを再定義し、vimrcに次の変数を定義する必要があります(これは初期化中にファイルが読み込まれる順序によるものです)。
:let html_my_rendering=1
例を見たい場合は、
https://www.fleiner.com/vim/download.html からmysyntax.vimをダウンロードしてください。
このレンダリングを無効にするには、次の行をvimrcファイルに追加します。
:let html_no_rendering=1
デフォルトでは、Vimは最初の表示行の250行前まで構文を同期させます。これは、以下を使用して構成できます。
:let html_minlines = 500
HTMLコメントは非常に特殊であり(詳細については、HTMLリファレンスドキュメントを参照してください)、構文色付けスキームはすべてのエラーを強調表示します。ただし、誤ったスタイル(<!-- で始まり、--> で終わる)を使用する場合は、以下を定義できます。
:let html_wrong_comments=1
HTMLドキュメント内に埋め込まれたJavaScriptおよびVisual Basicは、「Special」として強調表示され、ステートメント、コメント、文字列などは標準的なプログラミング言語と同じように色付けされます。現在、JavaScriptとVisual Basicのみがサポートされており、他のスクリプト言語はまだ追加されていません。
埋め込みおよびインラインのカスケードスタイルシート(CSS)も強調表示されます。
世の中にはいくつかのhtmlプリプロセッサ言語があります。html.vimは、それを含めるのが簡単になるように作成されています。これを行うには、その言語の構文色付けファイルに次の2行を追加します(例はasp.vimファイルから)。
runtime! syntax/html.vim
syn cluster htmlPreproc add=asp
次に、プリプロセッサ言語を含むすべての領域を、クラスタhtmlPreprocに追加する必要があります。
html-folding HTML構文ファイルは、開始タグと終了タグの間の構文
折りたたみを提供します(
:syn-foldを参照)。これは、次のようにしてオンにできます。
:let g:html_syntax_folding = 1
:set foldmethod=syntax
注:構文折りたたみは、特に大きなファイルの場合、構文強調表示を大幅に遅くする可能性があります。
HTML/OSのカラーリングスキームは、次のようになっています。
VIMは関数と識別子に異なる色を指定しないため、デフォルトでは関数と変数名は同じ色です。これを変更するには(関数名を異なる色で認識できるようにすることが推奨されます)、次の行をvimrcに追加する必要があります。
:hi Function cterm=bold ctermfg=LightGray
もちろん、ctermfgは必要に応じて別の色にすることができます。
HTML/OSが直面するもう1つの問題は、HTML/OSコーディングを含むファイルであることを示す特別なファイルタイプがないことです。これは、ファイルを開いて、次のようにしてHTML/OS構文をオンにすることで変更できます。
:set syntax=htmlos
最後に、HTML/OSコードのブロックを開始するための開始文字と終了文字は、それぞれ << または [[ と >> または ]] にできることに注意してください。
Intel Itanium 64アセンブリ言語の強調表示。このファイルタイプを認識する方法については、
asm.vimを参照してください。
*.inc
ファイルがIA64として認識されるようにするには、これをvimrcファイルに追加します。
:let g:filetype_inc = "ia64"
Informの強調表示には、ほとんどのプログラムで広く使用されているInformライブラリによって提供されるシンボルが含まれています。ライブラリシンボルを強調表示したくない場合は、これをVim起動時に追加します。
:let inform_highlight_simple=1
デフォルトでは、InformプログラムはZマシンをターゲットにしていると想定され、Zマシンアセンブリ言語シンボルを適切に強調表示します。プログラムをGlulx/Glk環境をターゲットにする場合は、これを起動シーケンスに追加する必要があります。
:let inform_highlight_glulx=1
これにより、代わりにGlulxオペコードが強調表示され、glk()も強調表示されるシステム関数のセットに追加されます。
Informコンパイラは、特定の古いキーワードを検出するとエラーとしてフラグを立てます。これらのキーワードは通常、Vimによってエラーとして強調表示されます。このようなエラーの強調表示を防ぐには、これを起動シーケンスに追加する必要があります。
:let inform_suppress_obsolete=1
デフォルトでは、強調表示される言語機能は、コンパイラバージョン6.30およびライブラリバージョン6.11に準拠しています。古いInform開発環境を使用している場合は、これを起動シーケンスに追加できます。
:let inform_highlight_old=1
IDL(インタフェース定義言語)ファイルは、RPC呼び出しを定義するために使用されます。Microsoftの世界では、これはCOMインタフェースと呼び出しを定義するためにも使用されます。
IDLの構造は、いくつかのヒューリスティックを使用するのではなく、完全な文法ベースのアプローチを可能にするのに十分単純です。結果は大きく、やや反復的ですが、機能するようです。
ここには、idlファイルへのいくつかのMicrosoft拡張機能があります。それらの一部は、idl_no_ms_extensionsを定義することで無効になります。
拡張機能のより複雑なものは、idl_no_extensionsを定義することで無効になります。
idl_no_ms_extensions Microsoft固有の拡張機能の一部を無効にする idl_no_extensions 複雑な拡張機能を無効にする idlsyntax_showerror IDLエラーを表示する(やや邪魔になる可能性がありますが、非常に役立ちます) idlsyntax_showerror_soft デフォルトでエラーに対してよりソフトな色を使用する
java.vim構文強調表示ファイルには、いくつかのオプションがあります。
Java 1.0.2では、括弧内に中括弧を入れることは不可能であったため、これはエラーとしてフラグが立てられました。Java 1.1以降、これは可能であり(匿名クラスの場合)、したがってエラーとしてマークされなくなりました。古い方法を好む場合は、次の行をVim起動ファイルに入れます。
:let g:java_mark_braces_in_parens_as_errors = 1
java.lang
で宣言されたすべての(エクスポートされた)パブリックタイプは、常に自動的にインポートされ、単純名として使用できます。それらを強調表示するには、以下を使用します。
:let g:java_highlight_java_lang_ids = 1
https://www.fleiner.com/vim/download.htmlからjavaid.vimスクリプトをダウンロードすると、ほとんどの標準Javaパッケージのタイプも強調表示できます。特定のパッケージ(例えば、
java.io
)のタイプのみを強調表示する場合は、次を使用します。
:let g:java_highlight_java_io = 1
サポートされているすべてのパッケージのリストについては、javaid.vimファイルを確認してください。
インデントされた関数宣言のヘッダーは(ラムダ式とメソッド参照式の一部とともに)強調表示できますが、これはJavaコードをどのように記述するかによって異なります。2つの形式が認識されます。
1)関数宣言を、タブ、またはスペース...または8つのスペース文字で一貫してインデントして記述する場合は、次のいずれかを設定する必要があります。
:let g:java_highlight_functions = "indent"
:let g:java_highlight_functions = "indent1"
:let g:java_highlight_functions = "indent2"
:let g:java_highlight_functions = "indent3"
:let g:java_highlight_functions = "indent4"
:let g:java_highlight_functions = "indent5"
:let g:java_highlight_functions = "indent6"
:let g:java_highlight_functions = "indent7"
:let g:java_highlight_functions = "indent8"
'shiftwidth'に関して、これはインデントの最も左側のステップであることに注意してください。
2)ただし、関数と型の命名方法に関するJavaガイドラインに従い(大文字と小文字に関して)、任意の量のインデントがある場合は、次を設定する必要があります。
:let g:java_highlight_functions = "style"
さらに、「g:java_highlight_functions」の任意の値と組み合わせて、
:let g:java_highlight_signature = 1
関数名と、そのパラメータリストの括弧を、型パラメータ、戻り型、および仮パラメータとは明確に強調表示し、ラムダ式のパラメータリストの括弧を、その矢印を、仮パラメータまたは識別子とは明確に強調表示するようにできます。
どちらの設定も機能しないが、それでも関数宣言のヘッダーを強調表示したい場合は、現在の構文定義を変更するか、新しい構文定義を作成してください。
高階関数型は目で解析するのが難しいため、そのコンポーネントの一部を均一にトーンダウンすることが役立つ場合があります。そのような型名がJava命名ガイドラインに準拠している場合は、次のように配置できます。
:let g:java_highlight_generics = 1
Java 1.1では、
System.out.println()
関数と
System.err.println()
関数はデバッグにのみ使用する必要があります。起動ファイルに次の定義を追加することを検討してください。
:let g:java_highlight_debug = 1
これらのステートメントの大部分を
*Debug
デバッグステートメントとして色付けし、それら自身の項目の一部をさらにグループ化してリンクするために、
*Special
をDebugSpecialとして、
*String
をDebugStringとして、
*Boolean
をDebugBooleanとして、
*Type
をDebugTypeとして色付けします。これらは、文字列、適切な文字列、ブールリテラル、および特別なインスタンス参照(
super
、
this
、
null
)に現れる特殊文字に使用されます。
Javadocは、Javaプログラムファイルから特別なコメントを取り出し、HTMLページを作成するプログラムです。標準設定では、このHTMLコードはHTMLファイルと同様にハイライト表示されます(
html.vimを参照)。このコード内にJavaScriptやCSSを追加することもできます(下記参照)。HTMLレンダリングとMarkdownレンダリングは、次のように異なります。1. 最初の文(最初のピリオド
.
までのすべての文字。このピリオドの後には空白文字または行終端文字が続くか、最初のブロックタグ(例:
@param
、
@return
)まで)は、SpecialCommentの特別なコメントとして色付けされます。2. テキストは、
*Comment
のコメントとして色付けされます。3. HTMLコメントは、
*Special
の特殊記号として色付けされます。4. 標準のJavadocタグ(
@code
、
@see
など)は、
*Special
の特殊記号として色付けされ、その引数の一部は
*Function
の関数名として色付けされます。HTMLとMarkdownの両方でこの機能をオフにするには、スタートアップファイルに次の行を追加します。
:let g:java_ignore_javadoc = 1
あるいは、HTMLコメントまたはMarkdownコメントのみを抑制することもできます。
:let g:java_ignore_html = 1
:let g:java_ignore_markdown = 1
Markdownコメントで利用できる追加サポートについては、
ft-java-pluginを参照してください。
上記で説明した特別なJavadocコメントのハイライトを使用する場合、JavaScript、Visual Basicスクリプト、埋め込みCSS(スタイルシート)の特別なハイライトをオンにすることもできます。これは、これらの言語のいずれかが実際にJavadocコメントに表示される場合にのみ意味があります。使用する変数は次のとおりです。
:let g:java_javascript = 1
:let g:java_css = 1
:let g:java_vb = 1
これら3つの変数は、HTMLシンタックスファイルで管理されていることに注意してください。
Javadoc以外のコメントでは、次を使用して数値と文字列を認識できます。
:let g:java_comment_strings = 1
'foldmethod'が"syntax"に設定されている場合、コードブロックと複数行コメントが折りたたまれます。通常、複数行コメントの最初の行にはテキストが記述されないため、Javadocコメントの折りたたまれた内容は、デフォルトの
'foldtext'の値では情報量が少なくなります。この方法で記述されたコメントの2行目の内容を表示するか、それ以外の場合は最初の行の内容を表示することを選択できます。次の設定で実現できます。
:let g:java_foldtext_show_first_or_second_line = 1
行末の空白文字またはタブ文字の前の空白文字の連続を、次のようにエラーとしてマークできます。
:let g:java_space_errors = 1
ただし、次のいずれかを定義することによって、いずれかの種類のエラーを抑制することもできます。
:let g:java_no_trail_space_error = 1
:let g:java_no_tab_space_error = 1
入れ子になった括弧を異なる色で強調表示するには、
javaParen
、
javaParen1
、および
javaParen2
の色を定義します。例:
:hi link javaParen Comment
または
:hi javaParen ctermfg=blue guifg=#0000ff
特定の修飾子は互いに両立しません。たとえば、
abstract
と
final
などです。
:syn list javaConceptKind
他の修飾子とは異なるグループとして強調表示できます。次のように設定します。
:hi link javaConceptKind NonText
後方にスクロール中にハイライトエラーが発生し、
CTRL-L
で再描画すると修正される場合は、"g:java_minlines"変数を大きな数値に設定してみてください。
:let g:java_minlines = 50
これにより、構文同期は、最初に表示された行の50行前から開始されます。デフォルト値は10です。大きな数値を使用するデメリットは、再描画が遅くなる可能性があることです。
Javaプラットフォームへの重要な変更は、JDK拡張提案(JEP)の形式で段階的に導入され、リリース用に実装でき、そのプレビュー機能として提供できます。このような機能がプラットフォームに統合されるか、この取り組みから撤回されるまでに、いくつかのJEPと数回のリリースサイクルが必要になる場合があります。早期導入者に対応するために、Vimには、実装されている構文関連のプレビュー機能のオプションのサポートがあります。次のリストのように、プレビュー機能番号のリストを指定して要求できます。
:let g:java_syntax_previews = [455, 476]
サポートされているJEP番号は、この表から抽出する必要があります。
430
:文字列テンプレート[JDK 21]
455
:パターン、instanceof、およびswitchのプリミティブ型
476
:モジュールインポート宣言
特定のプレビュー機能がJavaプラットフォームに統合されるとすぐに、そのエントリはテーブルから削除され、関連するオプションは廃止されることに注意してください。
jsonシンタックスファイルは、デフォルトで非表示サポート付きのシンタックスハイライトを提供します。非表示を無効にするには、次のようにします。
let g:vim_json_conceal = 0
エラーの構文強調表示を無効にするには、次のようにします。
let g:vim_json_warnings = 0
数値に独自の色を付けないようにするには、次の行をvimrcに追加します。
hi link jqNumber Normal
引用符を文字列とは異なるハイライトにしたい場合は、次のようにします。
let g:jq_quote_highlight = 1
Lace(Eiffelでのクラスのアセンブリ用言語)は大文字と小文字を区別しませんが、スタイルガイドラインはそうではありません。大文字と小文字を区別しないハイライト表示を使用する場合は、スタートアップファイルでVim変数「lace_case_insensitive」を定義するだけです。
:let lace_case_insensitive=1
b:lf_shell_syntax
lfファイルマネージャー設定ファイル(lfrc)の場合、次の変数を使用して、異なる
'include'コマンド検索パターンを設定することにより、シェルコマンドの構文強調表示をグローバルに、またはバッファーごとに変更できます。 let g:lf_shell_syntax = "syntax/dosbatch.vim" let b:lf_shell_syntax = "syntax/zsh.vim"
これらの変数は、デフォルトでは設定されていません。
Lexは、「^%%$」セクション区切り記号が後に続くセクションの手がかりを提供しないため、ブルートフォース同期を使用します。したがって、次の値
:syn sync minlines=300
ユーザーが同期の困難(大きなlexファイルで発生する可能性のあるもの)を経験している場合は変更できます。
非推奨の関数をエラーとして強調表示するには、vimrcに次のように追加します。
:let g:lifelines_deprecated = 1
lispの構文強調表示には、2つのオプションがあります。
g:lisp_instring : If it exists, then "(...)" strings are highlighted
as if the contents of the string were lisp.
Useful for AutoLisp.
g:lisp_rainbow : If it exists and is nonzero, then differing levels
of parenthesization will receive different
highlighting.
g:lisp_rainbowオプションは、括弧とバッククォート付き括弧に10レベルの個別の色付けを提供します。色付けレベルの数が多いため、レインボーモードは非レインボー強調表示とは異なり、ctermfgとguifgを使用して強調表示を指定し、それによって標準の強調表示グループを使用した通常のカラースキーム制御をバイパスします。実際に使用される強調表示は、ダーク/ブライト設定によって異なります(
'bg'を参照)。
liteの構文強調表示には2つのオプションがあります。
文字列内のSQL構文強調表示が必要な場合は、これを使用します。
:let lite_sql_query = 1
同期の場合、minlinesはデフォルトで100になります。別の値を優先する場合は、「lite_minlines」を目的の値に設定できます。例:
:let lite_minlines = 200
LPCは、シンプルでメモリ効率の高い言語(Lars Pensjö C)の略です。LPCのファイル名は通常
*.c
です。これらのファイルをLPCとして認識すると、Cプログラムのみを記述するユーザーに迷惑がかかります。Vimで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以前の場合、慎重な修飾子をオフにする必要があります。これにより、v22以降の新しいefunも無効であると主張されます。最新バージョンのMudOSを使用している場合は、この変数を設定しないでください。
:let lpc_pre_v22 = 1
LpMud 3.2シリーズのLPCの場合
:let lpc_compat_32 = 1
LPC4シリーズのLPCの場合
:let lpc_use_lpc4_syntax = 1
uLPCシリーズのLPCの場合:uLPCはPike用に開発されているため、代わりにPike構文を使用する必要があり、ソースファイルの名前は
*.pike
にする必要があります。
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
Vimは、メールのすべての標準要素(ヘッダー、署名、引用されたテキスト、URL /メールアドレス)を強調表示します。標準の規則に従い、署名は、「--」のみを含む行で始まり、オプションで空白が続き、改行で終わります。
Vimは、「]」、「}」、「|」、「>」、または単語の後に「>」が続く行を引用テキストとして扱います。ただし、Vimは、テキストが「>」(オプションで1つのスペースが続く)で引用されている場合にのみ、引用テキスト内のヘッダーと署名を強調表示します。
デフォルトでは、mail.vimは、最初に表示された行の100行前まで構文を同期させます。低速なマシンを使用しており、一般的にヘッダーが短いメールを処理する場合は、これをより小さい値に変更できます。
:let mail_minlines = 30
makefileでは、通常、エラーを簡単に見つけられるようにコマンドが強調表示されます。ただし、これは色付けが多すぎる可能性があります。この機能をオフにするには、次のようにします。
:let make_no_commands = 1
コメントもデフォルトで強調表示されます。これをオフにするには、次のようにします。
:let make_no_comments = 1
Microsoft Makefileは、変数展開とコメントを異なる方法で処理します(バックスラッシュはエスケープには使用されません)。これにより、強調表示が間違っている場合は、これを試すことができます。
:let make_microsoft = 1
Waterloo Maple Inc.のMaple Vは、記号代数をサポートしています。この言語は、ユーザーが選択的にロードする多くの関数パッケージをサポートしています。Maple Vリリース4で提供されている標準のパッケージ関数のセットは、ユーザーの判断で強調表示できます。ユーザーは、vimrcファイルに次のように配置できます。
:let mvpkg_all= 1
すべてのパッケージ関数を強調表示するか、下の表から変数/パッケージを選択し、その変数を1に設定して、任意のサブセットを選択できます($VIMRUNTIME/syntax/syntax.vimをソースする前)。
Maple Vパッケージ関数セレクターの表
mv_DEtools mv_genfunc mv_networks mv_process
mv_Galois mv_geometry mv_numapprox mv_simplex
mv_GaussInt mv_grobner mv_numtheory mv_stats
mv_LREtools mv_group mv_orthopoly mv_student
mv_combinat mv_inttrans mv_padic mv_sumtools
mv_combstruct mv_liesymm mv_plots mv_tensor
mv_difforms mv_linalg mv_plottools mv_totorder
mv_finance mv_logic mv_powseries
g:markdown_fenced_languages g:markdown_syntax_conceal
長い領域がある場合、強調表示が間違っている可能性があります。表示の速度が低下する代わりに、エンジンをさらに後方まで確認して、領域の開始時に同期させることができます。たとえば、500行(デフォルトは50)です。
:let g:markdown_minlines = 500
マークダウン文書で fenced code block の構文強調を有効にしたい場合は、次のように設定できます。
:let g:markdown_fenced_languages = ['html', 'python', 'bash=sh']
マークダウン構文の隠蔽を無効にするには、vimrc に以下を追加してください。
:let g:markdown_syntax_conceal = 0
*.m
ファイルが空の場合、vimrc に以下を設定していない限り、自動的に Matlab ファイルとみなされます。
let filetype_m = "mma"
デフォルトでは、構文強調には、style や header などの基本的な HTML タグが含まれます。
html.vim。厳密な Mediawiki 構文強調を行うには、以下のように設定します。
let g:html_no_rendering = 1
HTML の強調表示が必要な場合、ターミナルベースのテキストフォーマット(太字や斜体など)は、次のように設定することで可能です。
let g:html_style_rendering = 1
Vim は、方言タグ付きのコメントを認識し、指定された方言を自動的に選択します。
方言タグ付きコメントの構文は次のとおりです。
taggedComment :=
'(*!' dialectTag '*)'
;
dialectTag :=
m2pim | m2iso | m2r10
;
reserved words
m2pim = 'm2pim', m2iso = 'm2iso', m2r10 = 'm2r10'
方言タグ付きコメントは、ソースファイルの最初の 200 行以内に存在する場合に Vim によって認識されます。最初のコメントのみが認識され、追加の方言タグ付きコメントは無視されます。
例:
DEFINITION MODULE FooLib; (*!m2pim*)
...
変数 g:modula2_default_dialect は、Modula-2 ファイルの内容から方言を判別できない場合に、デフォルトの Modula-2 方言を設定します。定義されており、'm2pim' に設定されている場合、デフォルトの方言は PIM です。
例:
let g:modula2_default_dialect = 'm2pim'
強調表示は、次の変数を使用して各方言に対してさらに設定可能です。
式の中で C スタイルのコメントを使用しており、強調表示が乱れる場合は、C スタイルのコメントに拡張(低速!)マッチを使用するとよいでしょう。
:let moo_extended_cstyle_comments = 1
文字列内の代名詞置換パターンの強調表示を無効にするには、以下のように設定します。
:let moo_no_pronoun_sub = 1
文字列内の正規表現演算子 '%|' と、一致する '%(' および '%)' の強調表示を無効にするには、以下のように設定します。
: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 の構文強調表示には、2 つのオプションがあります。
文字列内のSQL構文強調表示が必要な場合は、これを使用します。
:let msql_sql_query = 1
同期の場合、minlines のデフォルトは 100 です。別の値が必要な場合は、"msql_minlines" を希望の値に設定できます。例:
:let msql_minlines = 200
デフォルトの NeoMutt ログの色を無効にするには、以下のように設定します。
:let g:neolog_disable_default_colors = 1
N1QL は、Couchbase Server データベースで JSON ドキュメントを操作するための SQL に似た宣言型言語です。
Vim の構文強調表示では、N1QL ステートメント、キーワード、演算子、型、コメント、および特殊な値を強調表示します。Vim は、N1QL に存在しない、COLUMN や CHAR などの SQL またはその多くの方言に固有の構文要素を無視します。
NCF 構文強調表示には 1 つのオプションがあります。
認識されない(ncf.vim によって)ステートメントをエラーとして強調表示したい場合は、これを使用します。
:let ncf_highlight_unknowns = 1
これらのエラーを強調表示したくない場合は、未設定のままにしてください。
nroff 構文ファイルは、AT&T n/troff でそのまま動作します。構文ファイルに含まれている GNU groff の追加機能を有効にする必要があります。
たとえば、Linux および BSD ディストリビューションでは、groff がデフォルトのテキスト処理パッケージとして使用されています。groff の追加の構文強調表示機能を有効にするには、ファイルが groff として認識されるように設定するか(
ft-groff-syntax を参照)、または起動ファイルに次のオプションを追加します。
:let nroff_is_groff = 1
Groff は、Solaris でまだ見られる可能性がある古い AT&T n/troff とは異なります。Groff のマクロとリクエストの名前は 2 文字より長く、言語プリミティブの拡張機能があります。たとえば、AT&T troff では、リクエスト \(yr を使用して年を 2 桁の数字としてアクセスします。groff では、互換性のために認識される同じリクエストを使用するか、groff のネイティブ構文である \[yr] を使用できます。さらに、4 桁の年を直接使用できます:\[year]。マクロリクエストは 2 文字より長くすることができます。たとえば、GNU mm は、verbatim 環境を作成するためにリクエスト ".VERBON" と ".VERBOFF" を受け入れます。
g/troff が提供できる最適なフォーマット出力を得るには、間隔と句読点に関するいくつかの簡単なルールに従う必要があります。
1. 行末に空白を残さないでください。
2. 文末のピリオド、感嘆符などの後には、1 つのスペースのみ残してください。
3. 後述の理由により、すべてのピリオド記号の後にキャリッジリターンを続けるのが最善です。
これらの珍しいヒントの背景にある理由は、g/n/troff には、上記のルールに従わないと簡単に混乱する可能性のある改行アルゴリズムがあるためです。
TeX とは異なり、troff はテキストを行ごとに塗りつぶし、段落ごとには塗りつぶしません。さらに、糊付けや伸縮の概念がなく、すべての水平および垂直スペース入力はそのまま出力されます。
したがって、文の間に、最終ドキュメントで意図するよりも多くのスペースを使用しないように注意する必要があります。このため、一般的な方法は、すべての句読点記号の直後にキャリッジリターンを挿入することです。最終的に処理された出力で「均等」なテキストが必要な場合は、入力テキストで一定の間隔を維持する必要があります。末尾のスペースと句読点の後の 2 つ以上のスペースの両方をエラーとしてマークするには、以下を使用します。
:let nroff_space_errors = 1
余分な間隔や、ファイルの正しい組版を妨げるその他のエラーを検出するもう 1 つの手法は、構成ファイルで構文グループ "nroffDefinition" および "nroffDefSpecial" の目に付く強調表示定義を定義することです。例:
hi def nroffDefinition cterm=italic gui=reverse
hi def nroffDefSpecial cterm=italic,bold gui=reverse,bold
ソースファイル内のプリプロセッサエントリをセクションマーカーと同じように簡単にナビゲートしたい場合は、vimrc ファイルで次のオプションを有効にできます。
let b:preprocs_as_sections = 1
また、構文ファイルは、ms パッケージの拡張段落マクロ(.XP)の追加段落マーカーを追加します。
最後に、
groff.vim 構文ファイルがあり、ファイルベースで、またはデフォルトでグローバルに groff 構文強調表示を有効にするために使用できます。
OCaml 構文ファイルは、.ml、.mli、.mll、および .mly のプレフィックスを持つファイルを処理します。次の変数を設定することで、
:let ocaml_revised = 1
camlp4 プリプロセッサでサポートされているように、標準の OCaml 構文から修正された構文に切り替えることができます。変数を設定すると、
:let ocaml_noend_error = 1
Vim が同期しなくなる非常に長い構造がソースに含まれている場合に役立つ、"end" のエラーとしての強調表示を防ぎます。
デフォルトでは、markdown ファイルはファイルタイプ "markdown" として検出されます。または、代わりにファイルタイプ "pandoc" として検出したい場合があります。これを行うには、
g:filetype_md 変数を設定します。
:let g:filetype_md = 'pandoc'
pandoc 構文プラグインは、見栄えの良い強調表示に
conceal を使用します。デフォルトは 1 です。
:let g:pandoc#syntax#conceal#use = 1
隠蔽しない要素を指定するには、次の変数を設定します。
:let g:pandoc#syntax#conceal#blacklist = []
これは、ここで使用できるルールのリストです。
titleblock
image
block
subscript
superscript
strikeout
atx
codeblock_start
codeblock_delim
footnote
definition
list
newline
dashes
ellipses
quotes
inlinecode
inlinemath
隠蔽の動作方法をカスタマイズできます。たとえば、脚注を
*
記号でマークする場合は、以下のように設定します。
:let g:pandoc#syntax#conceal#cchar_overrides = {"footnote" : "*"}
リンク内の URL を隠蔽するには、以下を使用します。
:let g:pandoc#syntax#conceal#urls = 1
特定のコードブロックタイプが Normal のままになるように強調表示しないようにします。コードブロックタイプには、定義ブロック内のコードブロックの "definition" や、区切られたコードブロックの "delimited" が含まれます。デフォルト = []
:let g:pandoc#syntax#codeblocks#ignore = ['definition']
言語が指定されている区切られたコードブロックに埋め込み強調表示を使用します。デフォルト = 1
:let g:pandoc#syntax#codeblocks#embeds#use = 1
埋め込みを強調表示するために、どの言語を使用し、どの構文ファイルを使用するかを指定します。これは言語名のリストです。pandoc と vim で使用する言語が一致しない場合は、「PANDOC=VIM」構文を使用できます。例:
:let g:pandoc#syntax#codeblocks#embeds#langs = ["ruby", "bash=sh"]
強調に斜体と太字を使用します。デフォルト = 1
:let g:pandoc#syntax#style#emphases = 1
"0" は g:pandoc#syntax#conceal#blacklist に "block" を追加します。そうしないと、スタイルがどこに適用されているかを判断できないためです。
下線付きの添え字、上付き文字、取り消し線テキストスタイルを追加します。デフォルト = 1
:let g:pandoc#syntax#style#underline_special = 1
定義リストを検出して強調表示します。これを無効にするとパフォーマンスが向上する可能性があります。デフォルトは 1 (つまり、デフォルトで有効) です。
:let g:pandoc#syntax#style#use_definition_lists = 1
pandoc の構文スクリプトには、以下のコマンドも付属しています。
:PandocHighlight LANG
コードブロック内の言語 LANG の埋め込み強調表示を有効にします。g:pandoc#syntax#codeblocks#embeds#langs 内の項目の構文を使用します。
:PandocUnhighlight LANG
コードブロック内の言語 LANG の埋め込み強調表示を無効にします。
PApp 構文ファイルは、.papp ファイルと、XML をトップレベルのファイル形式として使用した perl/xml/html/その他の混合である、.pxml および .pxsl ファイルを処理します。デフォルトでは、phtml または pxml セクション内のすべては、埋め込みプリプロセッサコマンドを含む文字列として扱われます。変数
:let papp_include_html=1
を起動ファイルに設定すると、phtml セクション内の HTML コードを構文強調表示しようとしますが、これは比較的遅く、編集するにはカラフルすぎます。;)
"*.p" に一致するファイルは Progress または Pascal であり、"*.pp" に一致するファイルは Puppet または Pascal である可能性があります。自動検出が機能しない場合、または Pascal ファイルのみを編集する場合は、起動 vimrc でこれを使用してください。
:let filetype_p = "pascal"
:let filetype_pp = "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 は、+、
*
、.. などの記号演算子を演算子の色で表示するかどうかを制御します。記号演算子を色付けするには、起動ファイルに次の行を追加してください。
: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 変数を定義できます。
:let pascal_one_line_string=1
<Tab>
文字が気に入らない場合は、pascal_no_tabs 変数を設定できます。タブはエラーとして強調表示されます。
:let pascal_no_tabs=1
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 フレンドは最初の行のように強調表示されます。変数 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)
同期には 3 つのオプションがあります。最初の 2 つは、同期のトリガーをオフにするもので、正常に動作しない場合にのみ必要です。スクロール中に突然画面全体の色が完全に変わる場合は、それらのいずれかをオフにしてみてください。間違いの原因となる行がわかった場合は、開発者に知らせてください。
1 つは "^\s*sub\s*" で、もう 1 つは "^[$@%]" でトリガーされます。
:let perl_no_sync_on_sub
:let perl_no_sync_on_global_var
以下では、構文強調表示の試行の開始点を VIM が検索する最大距離を設定できます。
: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 および PHP4
php.vim php3.vim ft-php-syntax ft-php3-syntax
[注: 以前は "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 で開始から同期します。
TeX は組版言語であり、plaintex は TeX の「プレーン」バリアントのファイル タイプです。
*.tex
ファイルを plain TeX として認識させたくない場合は、
ft-tex-plugin を参照してください。
この構文ファイルには、次のオプションがあります。
let g:plaintex_delimiters = 1
"[]" および "{}" の角括弧を強調表示する場合。
PPWizard は HTML および OS/2 INF ファイルのプリプロセッサです。
この構文ファイルには、次のオプションがあります。
ppwiz_highlight_defs : PPWizard の定義の強調表示モードを決定します。可能な値は次のとおりです。
ppwiz_highlight_defs = 1 : PPWizard #define ステートメントは、その内容の色を保持します (例: PPWizard マクロおよび変数)。
ppwiz_highlight_defs = 2 : プリプロセッサ #define および #evaluate ステートメントは、行継続記号を除いて単色で表示されます。
ppwiz_highlight_defs のデフォルト設定は 1 です。
ppwiz_with_html : 値が 1 (デフォルト) の場合、リテラル HTML コードを強調表示します。0 の場合、HTML コードを通常のテキストのように扱います。
phtml の構文強調表示には、2 つのオプションがあります。
文字列内のSQL構文強調表示が必要な場合は、これを使用します。
:let phtml_sql_query = 1
同期の場合、minlines のデフォルトは 100 です。別の値を指定する場合は、"phtml_minlines" を目的の値に設定できます。例:
:let phtml_minlines = 200
PostScript の強調表示に関しては、いくつかのオプションがあります。
最初に、強調表示する PostScript 言語のバージョンです。現在、3 つの定義済み言語バージョン、つまりレベルがあります。レベル 1 は元の基本バージョンで、レベル 2 のリリース前のすべての拡張機能が含まれています。レベル 2 は最も一般的なバージョンで、レベル 3 のリリース前の独自の拡張機能のセットが含まれています。レベル 3 は現在サポートされている最高レベルです。postscr_level 変数を次のように定義して、強調表示する PostScript 言語のレベルを選択します。
:let postscr_level=2
この変数が定義されていない場合は、現在最も普及しているバージョンであるため、デフォルトで 2 (レベル 2) になります。
注: すべての PS インタープリターが特定の言語レベルのすべての言語機能をサポートするわけではありません。特に、PS ファイルの先頭にある %!PS-Adobe-3.0 は、存在する PostScript がレベル 3 PostScript であることを意味しません。
Display PostScript を使用している場合は、次の postscr_display 変数を定義することで、Display PS 言語機能の強調表示を含めることができます。
:let postscr_display=1
Ghostscript を使用している場合は、変数 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 データベースに適用されます。
Vim がパターン
printcap または
termcap に一致しない printcap/termcap ファイルを認識できるようにするには、システムの適切な追加パターンを
myfiletypefile ファイルに入れる必要があります。これらのパターンでは、変数 "b:ptcap_type" を "print" または "term" のいずれかに設定し、次に
'filetype' オプションを ptcap に設定する必要があります。
たとえば、/etc/termcaps/ 内のすべてのファイルを termcap ファイルとして Vim で識別するには、次を追加します。
:au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" |
\ set filetype=ptcap
CTRL-L
で再描画したときに修正される、後方にスクロール中に強調表示エラーが発生する場合は、"ptcap_minlines" 内部変数をより大きな数値に設定してみてください。
:let ptcap_minlines = 50
(デフォルトは 20 行です。)
"*.w" に一致するファイルは Progress または cweb である可能性があります。自動検出が機能しない場合、または cweb をまったく編集しない場合は、起動 vimrc でこれを使用してください。
:let filetype_w = "progress"
同じことが、アセンブリである可能性がある "*.i" および Pascal である可能性がある "*.p" にも当てはまります。アセンブリと Pascal を使用しない場合は、これを使用してください。
:let filetype_i = "progress"
:let filetype_p = "progress"
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
可能なすべての Python 強調表示が必要な場合
:let python_highlight_all = 1
これは、python_space_error_highlightを設定し、他のすべての設定を解除するのと同じ効果があります。
Python 2または両対応コード(Python 2と3の両方に対応)を使用している場合、Python 2およびPython 3.5までのサポートを備えた古い構文ファイルの使用を強制できます。
:let python_use_python2_syntax = 1
このオプションは、最新のPython 3.6以降のすべての機能を排除します。
注: これらのオプションの存在のみが重要であり、その値は重要ではありません。上記の1は任意の値に置き換えることができます。
Quakeの構文定義は、Quakeエンジンに基づいたほとんどのFPS(一人称シューティングゲーム)で機能するはずです。ただし、コマンド名は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コードの解析は、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
rmd.vim ft-rmd-syntax
YAMLヘッダーの構文強調表示を無効にするには、
vimrcに次を追加します。
let rmd_syn_hl_yaml = 0
引用キーの構文強調表示を無効にするには
let rmd_syn_hl_citations = 0
knitrチャンクヘッダーでRコードを強調表示するには
let rmd_syn_hl_chunk = 1
デフォルトでは、RコードのチャンクはR言語の規則に従って強調表示されます。さらに、バッファーが保存されるたびに、Vimはバッファーをスキャンし、新しいチャンクに他の言語が存在する場合は、それらを強調表示します。LaTeXコードも、バッファーが保存されると自動的に認識されて強調表示されます。この動作は、変数
rmd_dynamic_fenced_languages
と
rmd_include_latex
で制御でき、有効な値は次のとおりです。
let rmd_dynamic_fenced_languages = 0 " No autodetection of languages
let rmd_dynamic_fenced_languages = 1 " Autodetection of languages
let rmd_include_latex = 0 " Don't highlight LaTeX code
let rmd_include_latex = 1 " Autodetect LaTeX code
let rmd_include_latex = 2 " Always include LaTeX highlighting
rmd_dynamic_fenced_languages
の値が0の場合でも、次の例のように、コードチャンクを適切に強調表示する必要がある言語のリストを設定できます。
let rmd_fenced_languages = ['r', 'python']
R RESTRUCTURED TEXT
rrst.vim ft-rrst-syntax
knitrチャンクヘッダーでRコードを強調表示するには、
vimrcに次を追加します。
let rrst_syn_hl_chunk = 1
Rasiは、Rofi Advanced Style Informationの略です。これは、検索ウィンドウのレンダリングをスタイル設定するために、rofiプログラムによって使用されます。この言語は、CSSスタイルシートに大きく影響を受けています。次の拡張子を持つファイルは、rasiファイルとして認識されます:.rasi。
readlineライブラリは主にBASHシェルで使用され、すでに利用可能なコマンドとオプションにかなりの数が追加されています。これらの項目も強調表示するには、
vimrcに次を追加するか、readline構文のファイルがロードされる前にコマンドラインに入力するだけです。
let readline_has_bash = 1
これにより、BASH(バージョン2.05a以降、および以前の一部)が追加するコマンドの強調表示が追加されます。
Regoは、Styraによって開発されたクエリ言語です。主にkubernetesのポリシー言語として使用されますが、ほとんどすべてのものに適用できます。次の拡張子を持つファイルは、regoファイルとして認識されます:.rego。
構文強調表示は、選択された数のファイルタイプに対して、ドキュメント内のコードブロックに対して有効になります。デフォルトの構文リストについては、$VIMRUNTIME/syntax/rst.vimを参照してください。
ユーザー定義のコードブロック構文強調表示リストを設定するには
let rst_syntax_code_list = ['vim', 'lisp', ...]
複数のコードブロックタイプを単一の構文に割り当てるには、
rst_syntax_code_list
をマッピングとして定義します。
let rst_syntax_code_list = {
\ 'cpp': ['cpp', 'c++'],
\ 'bash': ['bash', 'sh'],
...
\ }
強調テキストに色強調表示を使用するには
let rst_use_emphasis_colors = 1
セクションの折りたたみを有効にするには
let rst_fold_enabled = 1
折りたたみは、一部のプラットフォームでパフォーマンスの問題を引き起こす可能性があることに注意してください。
後方スクロール中に強調表示エラーが発生し、
CTRL-L
で再描画すると修正される場合は、内部変数「rexx_minlines」を大きな数値に設定してみてください。
:let rexx_minlines = 50
これにより、構文同期は、最初に表示された行の50行前から開始されます。デフォルト値は10です。大きな数値を使用するデメリットは、再描画が遅くなる可能性があることです。
Vimは、".r"ファイルがどのタイプかを推測しようとします。検出できない場合(コメント行から)、デフォルトは「r」です。デフォルトをrexxにするには、vimrcに次の行を追加します:
g:filetype_r
:let g:filetype_r = "r"
演算子は、「ruby_operators」を定義することで強調表示できます。
:let ruby_operators = 1
空白エラーは、「ruby_space_errors」を定義することで強調表示できます。
:let ruby_space_errors = 1
これにより、末尾の空白と、スペース文字が先行するタブがエラーとして強調表示されます。これは、「ruby_no_trail_space_error」および「ruby_no_tab_space_error」を定義することでさらに調整でき、それぞれ末尾の空白とスペース後のタブを無視します。
折りたたみは、「ruby_fold」を定義することで有効にできます。
:let ruby_fold = 1
これにより、
'foldmethod'の値が、現在のバッファーまたはウィンドウに対してローカルに「syntax」に設定されます。これにより、Rubyファイルタイプを編集するときに構文ベースの折りたたみが有効になります。
デフォルトの折りたたみはかなり詳細です。つまり、「if」、「do」、「%w[]」のような小さな構文ユニットで対応する折りたたみレベルが作成される場合があります。
「ruby_foldable_groups」を設定して、折りたたむことができるグループを制限できます。
:let ruby_foldable_groups = 'if case %'
値は、スペースで区切られたキーワードのリストです。
キーワードの意味
-------- -------------------------------------
ALL ほとんどのブロック構文(デフォルト) NONE 「if」または「unless」ブロックの場合 def 「def」ブロック class 「class」ブロック module 「module」ブロック do 「do」ブロック begin 「begin」ブロック case 「case」ブロック for 「for」、「while」、「until」ループ { 波括弧ブロックまたはハッシュリテラル [ 配列リテラル % 「%」表記の付いたリテラル、例:%w(STRING)、%!STRING! / 正規表現文字列 文字列とシェルコマンド出力(「'」、「"」で囲まれたもの) : シンボル # 複数行コメント << ヒアドキュメント __END__ 「__END__」ディレクティブ後のソースコード
デフォルトでは、「end」キーワードは、それが閉じるブロックの開始ステートメントに従って色分けされます。便利ですが、この機能はコストがかかる可能性があります。再描画が遅くなる場合(または、色のサポートが不十分なターミナルを使用している場合)、「ruby_no_expensive」変数を定義してオフにすることができます。
:let ruby_no_expensive = 1
この場合、すべての制御キーワードに同じ色が使用されます。
この機能を有効にしたいが、後方スクロール中に強調表示エラーが発生し、
CTRL-L
で再描画すると修正される場合は、「ruby_minlines」変数を50より大きい値に設定してみてください。
:let ruby_minlines = 100
理想的には、この値は最大のクラスまたはモジュールを包含するのに十分な行数である必要があります。
「ruby_spellcheck_strings」を定義すると、Ruby構文で文字列のスペルチェックが実行されます。
:let ruby_spellcheck_strings = 1
デフォルトでは、R7RSキーワードのみが強調表示され、適切にインデントされます。
scheme.vimは、CHICKEN Scheme->Cコンパイラーの拡張機能もサポートしています。必要な場合は、b:is_chickenまたはg:is_chickenを定義します。
SDLの強調表示にはいくつかのキーワードが欠落している可能性がありますが、SDLには非常に多くのキーワードがあるため、対応するのはほぼ不可能です。
新しい標準であるSDL-2000では、すべての識別子は区別され(以前はそうではなかった)、すべてのキーワードは完全に小文字または完全に大文字で使用できると規定されています。強調表示にこれを反映させるには、次の変数を設定できます。
:let sdl_2000=1
これにより、多くの新しいキーワードも設定されます。以前のキーワードを無効にする場合は、おそらく良いアイデアですが、次を使用します。
:let SDL_no_96=1
インデントもおそらく不完全ですが、今のところ自分のプロジェクトには非常に満足しています。
タブを通常の空白から目立たせるために(タブでTodoの強調表示を使用することで実現)、次のようにして「g:sed_highlight_tabs」を定義します。
:let g:sed_highlight_tabs = 1
vimrcファイルに記述します。(この特別な強調表示は、検索パターン、置換テキスト、アドレス、またはAppend/Change/Insertコマンドで含まれるテキスト内のタブにのみ適用されます。)このオプションを有効にする場合は、タブ幅を1文字に設定することも良い考えです。そうすることで、文字列内のタブの数を簡単に数えることができます。
GNU sedでは、同じ行のテキストの後にコメントを記述できます。BSD sedでは、「#」が行の最初の文字である場合にのみコメントを許可します。BSDスタイルのコメントを強制する、つまり行末コメントをエラーとしてマークするには、次を使用します。
:let g:sed_dialect = "bsd"
この設定によって影響を受けない、GNU sedとBSD sedの間に他の違いがあることに注意してください。
バグ
変換コマンド(y)は、置換コマンドとまったく同じように扱われます。つまり、この構文ファイルに関する限り、変換は置換と同じフラグを受け入れますが、これは間違っています。(変換はフラグを受け入れません。)関係するコマンドには非常に複雑な処理(95個のパターン。それぞれ妥当なパターン区切り文字用)が必要なため、このバグは許容しています。
SGMLファイルのタグの配色スキームは、次のとおりです。
開始タグの<>は、終了タグの</>とは異なる色で表示されます。これは意図的なものです!開始タグには「Function」の色が使用され、終了タグには「Type」の色が使用されます(syntax.vimを参照して、それらがどのように定義されているかを確認してください)。
既知のタグ名はC言語のステートメントと同じように色付けされます。未知のタグ名は色付けされないため、エラーを簡単に見つけることができます。
引数(または属性)の名前についても同様であることに注意してください。既知の属性名は、不明な属性名とは異なる色で色付けされます。
いくつかのSGMLタグは、テキストのレンダリングを変更するために使用されます。以下のタグはsgml.vim構文カラーリングファイルによって認識され、通常のテキストの表示方法を変更します: <varname>
<emphasis>
<command>
<function>
<literal>
<replaceable>
<ulink>
および <link>
。
そのようなテキストのレンダリング方法を変更する場合は、次の構文グループを再定義する必要があります。
sgmlBold
sgmlBoldItalic
sgmlUnderline
sgmlItalic
リンク用のsgmlLink
この再定義を機能させるには、それらすべてを再定義し、vimrcで次の変数を定義する必要があります(これは初期化中にファイルが読み込まれる順序によるものです)
let sgml_my_rendering=1
このレンダリングを無効にするには、次の行をvimrcファイルに追加します。
let sgml_no_rendering=1
(Claudio Fleiner <
[email protected]>によるhtml.vimヘルプテキストからの翻案)
これは、古いUnix(Bourne)sh、およびbash、dash、posix、Kornシェルなどの新しいシェルの構文強調表示を対象としています。
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
sh:(デフォルト)Bourneシェル
let g:is_sh = 1
(dashユーザーはposixを使用する必要があります)
「#! ...」行がなく、ユーザーが上で示したようなデフォルトのsh.vim構文設定を利用していない場合、syntax/sh.vimはBourneシェルの構文を想定します。エラーレポートでRFCや市場浸透率の統計を引用する必要はありません。システムの使用しているshのデフォルトバージョンを選択し、関連する「let...」を<.vimrc>にインストールしてください。
syntax/sh.vimファイルは、いくつかのレベルの構文ベースの折りたたみを提供します
let g:sh_fold_enabled= 0 (default, no syntax folding)
let g:sh_fold_enabled= 1 (enable function folding)
let g:sh_fold_enabled= 2 (enable heredoc folding)
let g:sh_fold_enabled= 4 (enable if/do/for folding)
その後、さまざまな構文項目(つまり、HereDocumentsや関数本体)が構文的に折りたたみ可能になります(
:syn-foldを参照)。また、これらを組み合わせて複数の種類の折りたたみを行うこともできます
let g:sh_fold_enabled= 3 (enables function and heredoc folding)
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に埋め込みたい場合があります。例として、Lorance Stinson提供のawkでこれを行う方法の例を示します。次のファイルを$HOME/.config/nvim/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 code here...'
awk強調表示構文を使用して強調表示されます。明らかに、これは他の言語にも拡張できます。
Speedup構文ファイルにはいくつかのオプションがあります
strict_subsections:この変数が定義されている場合、セクションとサブセクションのキーワードのみがステートメントとして強調表示され、他のキーワード(OPERATIONセクションのWITHINなど)は強調表示されません。
highlight_types:この変数の定義により、温度や圧力などのストリームタイプが、プレーンな識別子ではなく型として強調表示されます。通常、DECLAREセクションにあるタイプが含まれています。独自のタイプを定義した場合は、構文ファイルに含める必要があります。
oneline_comments:この値の範囲は1から3で、#スタイルのコメントの強調表示を決定します。
oneline_comments = 1:偶数個の#の後に通常のSpeedupコードを許可します。
oneline_comments = 2:2番目の#で始まるコードをエラーとして表示します。これはデフォルト設定です。
oneline_comments = 3:1つ以上の#が含まれる場合は、行全体をエラーとして表示します。
特にOPERATIONセクションは、変数をPRESETしているために非常に大きくなる傾向があるため、同期が重要になる可能性があります。コンピューターが十分に高速な場合は、構文ファイルの最後近くでminlinesやmaxlinesを増やすことができます。
SQLのANSI標準がありますが、ほとんどのデータベースエンジンは独自のカスタム拡張機能を追加しています。現在、VimはSQLのOracleおよびInformix方言をサポートしています。Vimは、デフォルトで「*.sql」ファイルがOracle SQLであると想定します。
Vimは現在、構文スクリプトを介してさまざまなベンダーのSQLサポートを提供しています。VimのデフォルトをOracleから、現在サポートされているSQLタイプのいずれかに変更できます。バッファーごとに使用されているSQL方言を簡単に変更することもできます。
Squirrelは、軽量なスクリプト言語として設計された、高水準の命令型オブジェクト指向プログラミング言語であり、ビデオゲームのようなアプリケーションのサイズ、メモリ帯域幅、リアルタイム要件に適合します。次の拡張子を持つファイルは、squirrelファイルとして認識されます:.nut。
これは「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です。より大きな数値を使用するデメリットは、再描画が遅くなる可能性があることです。
<syntax/tex.vim>のバージョン28以降では、parts、chapters、sections、subsectionsなどの構文ベースの折りたたみがサポートされています。次を
let g:tex_fold_enabled=1
vimrcに入れ、:set fdm=syntax。LaTeXファイルの最後にモデル行を使用して後者を行うことをお勧めします
% vim: fdm=syntax
システムが遅すぎる場合は、以下を検討してください
https://vimhelp.org/vim_faq.txt.html#faq-29.7
LaTeXドキュメントのどこにもスペルチェックが必要ない場合は、次を
let g:tex_nospell=1
vimrcに入れます。コメント内でのみスペルチェックを抑制したい場合は、
g:tex_comment_nospellを参照してください。
コメントにソースコードなどを記述して、LaTeXファイルのコメントでスペルチェックを無効にしたい人もいます。これを行うには、次のコードをvimrcに入れます
let g:tex_comment_nospell= 1
LaTeXドキュメント内のすべての場所でスペルチェックを抑制する場合は、
g:tex_nospellを参照してください。
多くの場合、verbatimリージョンはソースコードのようなものに使用されます。ソースコードのスペルチェックが必要になることはほとんどありません。ただし、verbatimゾーンのスペルチェックが必要な場合は、次のコードをvimrcに入れます
let g:tex_verbspell= 1
<syntax/tex.vim>強調表示は、TeX、LaTeX、および一部のAmsTeXをサポートしています。強調表示は、normal、texZone、およびtexMathZoneの3つの主要なゾーン/リージョンをサポートします。これらのゾーンを適切に終了させるためにかなりの努力が払われていますが、$...$および$$..$$で区切られたゾーンは、開始パターンと終了パターンの違いがないため、同期できません。したがって、特別な「TeXコメント」が提供されています
%stopzone
これにより、texZoneまたはtexMathZoneの強調表示が強制的に終了されます。
コンピューターの速度が遅い場合は、次の値を減らすことをお勧めします
:syn sync maxlines=200
:syn sync minlines=50
(特に後者)。コンピューターが高速な場合は、それらを増やすことをお勧めします。これは主に同期(つまり、画面の一番上にあるテキストがどのグループに属しているか)に影響します。
ハイライトが遅くなる別の原因は、構文駆動の折りたたみによるものです。この回避策については、
tex-foldingを参照してください。
最後に、構文ハイライトがそれでも遅すぎる場合は、
:let g:tex_fast= ""
をvimrcに設定できます。この方法で使用すると、g:tex_fast変数は構文ハイライトスクリプトが領域や関連する同期を定義するのを回避します。その結果、構文ハイライトが大幅に高速化されます。その代償として、ハイライトが大幅に減り、構文ベースの折りたたみも使用できなくなり、構文ベースのエラーチェックもできなくなります。
一部の構文は許容できると判断するかもしれません。次の表を選択的に使用して、一部の構文ハイライトのみを有効にできます。
b : allow bold and italic syntax
c : allow texComment syntax
m : allow texMatcher syntax (ie. {...} and [...])
M : allow texMath syntax
p : allow parts, chapter, section, etc syntax
r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref)
s : allow superscript/subscript regions
S : allow texStyle syntax
v : allow verbatim syntax
V : allow texNewEnv and texNewCmd syntax
LaTeXはプログラマブルな言語であるため、特殊なLaTeXコマンド、構文、フォントでいっぱいの何千ものパッケージがあります。そのようなパッケージを使用している場合、配布されているsyntax / tex.vimがそれをサポートすることを望むことがよくあります。ただし、これは明らかに非現実的です。したがって、
mysyntaxfile-addの手法を使用して、syntax/tex.vimによって提供されるハイライトを拡張または変更することを検討してください。
私のウェブサイトに、さまざまな一般的なパッケージのサポートをいくつか含めました。
https://www.drchip.org/astronaut/vim/index.html#LATEXPKGS
そこにある構文ファイルは、.../after/syntax/tex/ディレクトリに入ります。
<tex.vim>は、さまざまな種類の字句エラーチェックをサポートしています。したがって、エラーチェックは多くの場合非常に役立ちますが、実際にはエラーがない場所でエラーを示す場合があります。これが問題であることが判明した場合、vimrcに次のステートメントを入力できます。
let g:tex_no_error=1
これにより、<syntax/tex.vim>によるすべてのエラーチェックが抑制されます。
LaTeXに新しい数式グループを含めたい場合、次のコードは、その方法の例を示しています。
call TexNewMathZone(sfx,mathzone,starform)
新しい数式グループには一意のサフィックスを付ける必要があります(現在、A-LおよびV-Zは<syntax/tex.vim>自体で使用されています)。例として、eqnarrayが<syntax/tex.vim>によってどのように設定されているかを見てみましょう。
call TexNewMathZone("D","eqnarray",1)
"mathzone"を新しい数式グループの名前に変更し、.vim/after/syntax/tex.vimでの呼び出しに変更する必要があります。 "starform"変数がtrueの場合、新しい数式グループにスター付き形式(つまりeqnarray *)があることを意味します。
*.tex
ファイルで「\makeatletter」を使用すると、コマンドで「@」を使用できるようになります。ただし、
*.tex
ファイルには、sty cls clo dtx ltxのいずれかの接尾辞がないため、構文ハイライトは@のそのような使用をエラーとしてフラグを立てます。これを解決するには、
:let b:tex_stylish = 1
:set ft=tex
vimrcに「let g:tex_stylish=1」を入れると、<syntax/tex.vim>は常に@のそのような使用を受け入れるようになります。
'conceallevel'が2に設定され、エンコーディングがutf-8の場合、アクセント付き文字、MathZonesのギリシャ文字、MathZonesの上付き文字と下付き文字など、多数の文字シーケンスを適切なutf-8グリフに変換できます。すべての文字を上付き文字または下付き文字にできるわけではありません。制約はutf-8がサポートしているものによるものです。実際、下付き文字としてサポートされている文字はわずかです。
vimrcでg:tex_concealを設定することにより、選択的にコンシールモードを使用できます。デフォルトでは、g:tex_concealは、次の文字セットのコンシールを有効にするために「admgs」に設定されています。
a = accents/ligatures
b = bold and italic
d = delimiters
m = math symbols
g = Greek
s = superscripts/subscripts
これらの1つ以上を省略すると、関連付けられたコンシール文字の置換は行われません。
通常、LaTeXキーワードは0〜9、a〜z、A〜z、および192〜255のみをサポートします。LaTeXキーワードは、*.sty
ファイル内にある場合を除き、アンダースコアをサポートしません。構文ハイライトスクリプトは、次のロジックでこれを処理します。
* g:tex_stylishが存在し、1の場合、ファイルは「sty」ファイルとして扱われるため、「_」はキーワードの一部として許可されます(g:tex_iskに関係なく) * それ以外の場合、ファイルの接尾辞がsty、cls、clo、dtx、またはltxの場合、ファイルは「sty」ファイルとして扱われるため、「_」はキーワードの一部として許可されます(g:tex_iskに関係なく)
アクセント、太字/斜体、数学、ギリシャ文字、および上付き文字/下付き文字を選択的にコンシールする方法については、
g:tex_concealを参照してください。
構文ベースのコンシールを有効にする上付き文字と下付き文字を細かく制御できます(
:syn-ccharを参照)。すべてのフォントがすべての文字をサポートしているわけではないため、コンシール置換リストをオーバーライドできます。デフォルトでは、これらのリストは次のように指定されます。
let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]"
let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]"
たとえば、Luxi Mono Boldを使用しています。 "hklmnpst"の下付き文字をサポートしていないため、
let g:tex_subscripts= "[0-9aeijoruvx,+-/().]"
不可解なutf-8グリフが表示されないように、~/.config/nvim/ftplugin/tex/tex.vimに入力します。
場合によっては、実際には一致しない括弧、角括弧、または中括弧が必要になります。たとえば、\text{(1,10]}は、1を含まず10を含む範囲です。もちろん、この要望は、デリミターの不一致検出を提供したいという要望と矛盾します。これらの矛盾する目標に対応するために、syntax/tex.vimは
g:tex_matchcheck = '[({[]'
デフォルト設定とともに表示されます。したがって、[]と()の不一致をチェックしない場合は、次のようにしてみてください。
let g:tex_matchcheck= '[{}]'
太字と斜体の領域内で一致が発生しないようにする場合は、
let g:tex_excludematcher= 1
これにより、texMatcherグループがこれらの領域に含まれるのを防ぎます。
tf構文のハイライトには1つのオプションがあります。
同期の場合、minlinesはデフォルトで100です。別の値が必要な場合は、「tf_minlines」を目的の値に設定できます。例:
:let tf_minlines = your choice
TypeScriptの構文ハイライトを制御するためのオプションが1つあります。
g:typescript_host_keyword この変数が1に設定されている場合、
addEventListener
などのホスト固有のAPIが強調表示されます。無効にするには、.vimrcでゼロに設定します。
let g:typescript_host_keyword = 0
デフォルト値は1です。
g:typst_embedded_languages Typstファイルは、
g:typst_embedded_languages変数を設定することにより、他の言語の構文ハイライトを埋め込むことができます。この変数は、構文定義がTypstファイルに含まれる言語名のリストです。例:
let g:typst_embedded_languages = ['python', 'r']
g:vimsyn_minlines g:vimsyn_maxlines より正確な構文ハイライトと画面更新速度の間にはトレードオフがあります。精度を向上させるには、g:vimsyn_minlines変数を増やすことをお勧めします。g:vimsyn_maxlines変数は、画面更新速度を向上させるために使用できます(詳細については、
:syn-syncを参照してください)。
g:vimsyn_minlines : used to set synchronization minlines
g:vimsyn_maxlines : used to set synchronization maxlines
(g:vim_minlinesとg:vim_maxlinesは、これら2つのオプションの非推奨のバリアントです)
g:vimsyn_embed g:vimsyn_embedオプションを使用すると、ユーザーは、埋め込みスクリプトのハイライトのタイプ(ある場合)を選択できます。
g:vimsyn_embed == 0 : disable (don't embed any scripts)
g:vimsyn_embed == 'lpPr' : support embedded Lua, Perl, Python and Ruby
このオプションは、デフォルトで無効になっています。
g:vimsyn_folding'foldmethod'が「syntax」に設定されている場合、一部の折りたたみはサポートされるようになりました。
g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding
g:vimsyn_folding =~ 'a' : augroups
g:vimsyn_folding =~ 'f' : fold functions
g:vimsyn_folding =~ 'h' : fold heredocs
g:vimsyn_folding =~ 'l' : fold Lua script
g:vimsyn_folding =~ 'p' : fold Perl script
g:vimsyn_folding =~ 'P' : fold Python script
g:vimsyn_folding =~ 'r' : fold Ruby script
デフォルトでは、g:vimsyn_foldingは設定されていません。複数の構文構造の折りたたみをサポートするために、指定された文字を連結します(例:g:vimsyn_folding = "fh"は、関数とヒアドキュメントの両方の折りたたみを有効にします)。
デフォルトでは、文字列はコメント内で強調表示されます。これは、g:vimsyn_comment_stringsをfalseに設定することで無効にできます。
g:vimsyn_noerror syntax / vim.vimが行うすべてのエラーハイライトが正しいとは限りません。Vimスクリプトは、正しく強調表示するのが難しい言語です。エラーハイライトを抑制する方法は、
vimrcに次の行を記述することです。
let g:vimsyn_noerror = 1
ワークフロー記述言語 (Workflow Description Language) は、人間が読めて書きやすい構文でデータ処理ワークフローを記述する方法です。これはバイオインフォマティクスでよく使用されます。仕様の詳細については、こちらをご覧ください:
https://github.com/openwdl/wdl
XF86Config ファイルの構文は、XFree86 v3.x と v4.x で異なります。どちらのバリアントもサポートされています。自動検出が使用されますが、完璧ではありません。バージョンを手動で指定する必要があるかもしれません。vimrc で XFree86 のバージョンに応じて、変数 xf86conf_xfree86_version を 3 または 4 に設定してください。例:
:let xf86conf_xfree86_version=3
複数のバージョンを混在して使用する場合は、変数 b:xf86conf_xfree86_version を設定してください。
オプション名にスペースやアンダースコアは使用できません。オプション名を強調表示したい場合は、"__s yn con gr_e_e_n" の代わりに "SyncOnGreen" を使用してください。
XML 名前空間はデフォルトで強調表示されます。これはグローバル変数を設定することで抑制できます。
:let g:xml_namespace_transparent=1
xml-folding XML 構文ファイルは、開始タグと終了タグの間で構文
折り畳み (
:syn-fold を参照) を提供します。これは次のようにして有効にできます。
:let g:xml_syntax_folding = 1
:set foldmethod=syntax
注:構文折りたたみは、特に大きなファイルの場合、構文強調表示を大幅に遅くする可能性があります。
xpm.vim は、XPM ファイルの内容に基づいて構文項目を動的に作成します。したがって、色の指定文字列などで変更を加えた場合は、":set syn=xpm" などで再度ソースする必要があります。
いずれかの色でピクセルをコピーするには、"yl" で「ピクセル」をヤンクし、"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文字のみを持つXPMファイルで動作し、ピクセル文字列の外をクリックしてはなりませんが、自由に改善してください。
例えば、X では、正方形のセルサイズのフォントを使用すると、見栄えがずっと良くなります。
:set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-*
g:yaml_schema b:yaml_schema YAML スキーマは、一連のタグと非特定のタグを解決するメカニズムの組み合わせです。ユーザーにとってこれは、YAMLパーサーが、プレーンスカラーの内容に応じて、プレーンスカラー(実際には文字列しかありえない)を他の型(null、ブール値、浮動小数点数、整数)の値として扱う可能性があることを意味します。
g:yaml_schema
オプションは、どのスキーマに従って値が特別に強調表示されるかを決定します。サポートされているスキーマは以下のとおりです。
スキーマの説明
failsafe: 追加の強調表示は行いません。 json: JSONスタイルの数値、ブール値、nullをサポートします。 core: より多くの数値、ブール値、nullスタイルをサポートします。 pyyaml: coreスキーマに加えて、タイムスタンプの強調表示をサポートしますが、数値として認識されるものや、coreスキーマにはない多くの追加のブール値にいくつかの違いがあります。
デフォルトのスキーマは core
です。
スキーマは実際にはプレーンスカラーに限定されませんが、これはYAML仕様で定義されたスキーマ間の唯一の違いであり、構文ファイルで定義された唯一の違いです。
zsh の構文スクリプトは、構文ベースの折り畳みを可能にします。
:let g:zsh_fold_enable = 1
Vim は 3 つのタイプの構文項目を理解します。
1. キーワード:
:syn-iskeyword または
'iskeyword' オプションで指定された文字に従って、キーワード文字のみを含めることができます。他の構文項目を含めることはできません。完全な単語(一致の前後にキーワード文字がない)でのみ一致します。「if」というキーワードは「if(a=b)」では一致しますが、「ifdef x」では一致しません。なぜなら、「(」はキーワード文字ではなく、「d」はキーワード文字だからです。
2. マッチ: これは単一の正規表現パターンとの一致です。
3. リージョン: これは「開始」正規表現パターンの一致で始まり、「終了」正規表現パターンの一致で終わります。他のテキストは間に表示される可能性があります。「スキップ」正規表現パターンを使用して、「終了」パターンとの一致を回避できます。
複数の構文項目を 1 つの構文グループに入れることができます。構文グループには、強調表示属性を与えることができます。たとえば、/* .. */
コメントを定義する項目と、"// .." コメントを定義する別の項目を作成し、両方を「Comment」グループに入れることができます。次に、「Comment」を太字フォントで青色にすることを指定できます。1つの構文項目に対して1つの強調表示グループを作成したり、すべての項目を1つのグループに入れたりすることができます。これは、強調表示属性をどのように指定したいかによって異なります。各項目を独自のグループに入れると、多くのグループの強調表示を指定する必要が生じます。
構文グループと強調表示グループは似ていることに注意してください。強調表示グループには、強調表示属性が与えられています。これらの属性は、同じ名前の構文グループに使用されます。
複数の項目が同じ位置で一致する場合、最後に定義されたものが優先されます。したがって、同じテキストと一致する項目を使用することで、以前に定義された構文項目を上書きできます。ただし、キーワードは常にマッチまたはリージョンよりも優先されます。また、大文字小文字を区別するキーワードは常に、大文字小文字を区別しないキーワードよりも優先されます。
複数の構文項目が一致する可能性がある場合、これらのルールが使用されます。
1. 複数の Match または Region 項目が同じ位置で始まる場合、最後に定義された項目が優先されます。2. キーワードは、Match および Region 項目よりも優先されます。3. より前の位置で始まる項目は、より後の位置で始まる項目よりも優先されます。
:sy[ntax] case [match | ignore] これは、次の ":syntax" コマンドが "match" を使用する場合は大文字小文字を区別して動作するか、"ignore" を使用する場合は大文字小文字を無視して動作するかを定義します。これより前の項目は影響を受けず、次の ":syntax case" コマンドまでのすべての項目が影響を受けることに注意してください。
:sy[ntax] case "syntax case match" または "syntax case ignore" のいずれかを表示します。
:sy[ntax] foldlevel start :sy[ntax] foldlevel minimum これは、foldmethod=syntax を使用する場合に、行の折り畳みレベルがどのように計算されるかを定義します (
fold-syntax および
:syn-fold を参照)。
start: 行の開始を含む項目のレベルを使用します。minimum: 行の項目の最低の局所最小レベルを使用します。
デフォルトは "start" です。行内で構文項目が水平方向に閉じたり開いたりする場合に、より自然な折り畳みを生成するには、行を水平方向に検索して、より高いレベルが続く行に含まれる最も低いレベルを見つけるために "minimum" を使用します。
:sy[ntax] foldlevel 現在の折り畳みレベルの方法を、"syntax foldlevel start" または "syntax foldlevel minimum" のいずれかで表示します。
:sy[ntax] spell toplevel :sy[ntax] spell notoplevel :sy[ntax] spell 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" のいずれかで表示します。
:sy[ntax] iskeyword [clear |
{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
E789 E890 Vim の Ex コマンドのように、オプションの末尾を持つキーワードがある場合は、オプションの文字を [] 内に入れて、すべてのバリエーションを一度に定義できます。
:syntax keyword vimCommand ab[breviate] n[ext]
キーワードが認識されるには、すべての文字が
'iskeyword' オプションに含まれている必要があることを忘れないでください。1文字でも含まれていない場合、キーワードは認識されません。マルチバイト文字も使用できます。これらは
'iskeyword' に含まれている必要はありません。構文固有の iskeyword 設定の定義については、
:syn-iskeyword を参照してください。
キーワードは常にマッチまたはリージョンよりも優先度が高く、複数の項目が一致する場合はキーワードが使用されます。キーワードはネストせず、キーワードに他のものを含めることはできません。
オプションと同じキーワード(ここで許可されていないものであっても)がある場合は、それを使用できないことに注意してください。代わりにマッチを使用してください。
キーワードの最大長は80文字です。
同じキーワードでも、その包含関係が異なれば、複数回定義できます。例えば、キーワードを一度は含まれないとして定義してあるハイライトグループを使い、一度は含まれるとして定義して別のハイライトグループを使うことができます。例:
: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 を参照。パターンが複数行にマッチする可能性があり、マッチは Vim がパターン検索を開始する場所に依存することに注意してください。同期がこれを処理するようにする必要があります。
例 (文字定数をマッチ)
:syntax match Character /'.'/hs=s+1,he=e-1
E398 E399 :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=+"+
開始/スキップ/終了パターンとオプションは任意の順序で指定できます。スキップパターンは0個または1個指定できます。開始パターンと終了パターンは1つ以上指定する必要があります。つまり、スキップパターンを省略できますが、少なくとも1つの開始パターンと1つの終了パターンを指定する必要があります。等号の前後に空白を入れることができます (ほとんどの場合、空白がない方が見栄えが良いですが)。
複数の開始パターンが指定されている場合、これらのいずれかとの一致で十分です。これは、開始パターンの間に OR 関係があることを意味します。最後に一致したものが使用されます。終了パターンについても同様です。
終了パターンの検索は、開始パターンの直後から開始されます。この場合、オフセットは使用されません。これは、終了パターンのマッチが開始パターンと重なることはないことを意味します。
スキップパターンと終了パターンは改行をまたいでマッチできますが、パターンの検索はどの行からでも開始できるため、多くの場合、期待どおりに動作しません。スキップパターンは、次の行の終了パターンのマッチを回避しません。トラブルを避けるために、単一行パターンを使用してください。
注意: 領域を開始するかどうかの決定は、一致する開始パターンのみに基づいています。一致する終了パターンのチェックはありません。これは機能しません
:syn region First start="(" end=":"
:syn region Second start="(" end=";"
2番目のパターンは常に最初のパターンよりも先にマッチします(最後に定義されたパターンが優先度が高くなります)。その後、2番目の領域は、その前に ':' があろうとなかろうと、次の ';' まで続きます。マッチを使用すると機能します
:syn match First "(\_.\{-}:"
:syn match Second "(\_.\{-};"
このパターンは、"\_." ですべての文字または改行にマッチし、"\ {-}" でそれを繰り返します (できるだけ少なく繰り返します)。
:syn-keepend デフォルトでは、包含されるマッチは、終了パターンのマッチを覆い隠す可能性があります。これは、ネストに役立ちます。例えば、"{" で始まり "}" で終わる領域は、別の領域を包含できます。この場合、検出された "}" は、包含された領域を終了しますが、外側の領域は終了しません: { 外側の "{}" 領域を開始 { 包含された "{}" 領域を開始 } 包含された "{}" 領域を終了 } 外側の "{}" 領域を終了 これを望まない場合は、"keepend" 引数を使用すると、外側の領域の終了パターンのマッチングも、包含されたアイテムをすべて終了します。これにより、同じ領域をネストすることは不可能になりますが、包含されたアイテムが、終了パターンとのマッチをスキップすることなく、終了パターンの一部を強調表示できます。例:
:syn match vimComment +"[^"]\+$+
:syn region vimCommand start="set" end="$" contains=vimComment keepend
"keepend" により、包含された vimComment に <EOL>
とのマッチが含まれていても、vimCommand は常にその行の終端で終了します。
"keepend" を使用しない場合、終了パターンとのマッチは、包含された各マッチの後に再試行されます。 "keepend" が含まれている場合、最初に検出された終了パターンとのマッチが使用され、包含されたマッチが切り捨てられます。
:syn-extend"keepend" の動作は、"extend" 引数を使用して変更できます。"extend" を持つアイテムが、"keepend" を使用するアイテムに包含されている場合、"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 アイテムをそれ以上継続させず、<> アイテムを強調表示するためだけに使用されます。 htmlScript アイテムは htmlRef アイテムを拡張します。
別の例
:syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend
これは、包含されたアイテム (例えば、"</a>" が異なる方法で強調表示されるようにマッチしたとき) によって終了が変更されないように、"keepend" を持つ領域を定義します。ただし、xmlFold 領域がネストされている場合 (それ自体を含んでいる)、"extend" が適用されるため、ネストされた領域の "</a>" はその領域のみを終了し、それが包含されている領域は終了しません。
:syn-excludenl マッチまたは領域の終了パターンのパターンに行末にマッチする '$' が含まれている場合、それが包含されている領域アイテムは次の行に進みます。例えば、"\\$" (行末のバックスラッシュ) でのマッチは、通常は行末で停止する領域を継続させることができます。これはデフォルトの動作です。これが必要ない場合は、これを回避する方法が2つあります: 1. 包含するアイテムに "keepend" を使用します。これにより、すべての包含されたマッチがマッチまたは領域を拡張するのを防ぎます。すべての包含されたアイテムが包含するアイテムを拡張しないようにする必要がある場合に使用できます。 2. 包含されたアイテムで "excludenl" を使用します。これにより、そのマッチが包含するマッチまたは領域を拡張するのを防ぎます。一部の包含されたアイテムのみが包含するアイテムを拡張しないようにする必要がある場合に使用できます。 "excludenl" は、適用するパターンの前に指定する必要があります。
:syn-matchgroup "matchgroup" を使用すると、開始パターンや終了パターンを領域の本文とは異なる方法で強調表示できます。例:
:syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+
これにより、引用符は "Quote" グループで強調表示され、その間のテキストは "String" グループで強調表示されます。 "matchgroup" は、次の "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
E849 構文グループの最大数は 19999 です。
構文アイテムを定義する :syntax コマンドは、いくつかの引数を取ります。一般的なものはここで説明します。引数は任意の順序で指定でき、パターンと混合できます。
すべてのコマンドがすべての引数を受け入れるわけではありません。この表は、すべてのコマンドに使用できない引数を示しています:
E395contains oneline fold display extend concealends~ :syntax keyword - - - - - - :syntax match yes - yes yes yes - :syntax region yes yes yes yes yes yes
これらの引数は、3つのすべてのコマンドで使用できます: conceal cchar contained containedin nextgroup transparent skipwhite skipnl skipempty
"conceal" 引数が指定されている場合、アイテムは隠蔽可能としてマークされます。実際に隠蔽されるかどうかは、
'conceallevel' オプションの値によって異なります。
'concealcursor' オプションは、現在の行の隠蔽可能なアイテムが、行を編集できるように、非隠蔽で表示されるかどうかを決定するために使用されます。
"concealends" 引数が指定されている場合、領域の開始と終了のマッチは、領域の内容ではなく、隠蔽可能としてマークされます。実際に隠蔽されるかどうかは、
'conceallevel' オプションの設定によって異なります。領域の終端は、"matchgroup" を介して独自の強調表示がある場合にのみ、この方法で個別に隠蔽できます。
synconcealed() 関数を使用して、隠蔽されたアイテムに関する情報を取得できます。
cchar
:syn-cchar
E844 "cchar" 引数は、隠蔽されている場合にアイテムの代わりに表示される文字を定義します ("cchar" の設定は、conceal 引数が指定されている場合にのみ意味があります)。 "cchar" が設定されていない場合は、
'listchars' オプションで定義されているデフォルトの隠蔽文字が使用されます。文字は、Tab のような制御文字にすることはできません。例:
:syntax match Entity "&" conceal cchar=&
強調表示については、
hl-Conceal を参照してください。
"contained" 引数が指定されている場合、このアイテムはトップレベルでは認識されず、別のマッチの "contains" フィールドで言及されている場合にのみ認識されます。例:
:syntax keyword Todo TODO contained
:syntax match Comment "//.*" contains=Todo
display
:syn-display
"display" 引数が指定されている場合、検出された強調表示が表示されない場合は、このアイテムはスキップされます。これにより、表示されるテキストの構文状態を検出する場合にこのアイテムをスキップすることで、強調表示が高速化されます。
一般的に、以下の条件を満たす match および region アイテムには "display" を使用できます。
アイテムが改行を越えて継続しないこと。C の例: "/*" コメントのリージョンは、次の行に続くため "display" を含めることはできません。
アイテムが、改行を越えて継続する、または次の行に継続させるアイテムを含まないこと。
アイテムが、それを含んでいるアイテムのサイズを変更しないこと。C の例: プリプロセッサの match で "\\$" を含む match は、プリプロセッサの match を短くする可能性があるため、"display" を持つことはできません。
アイテムが、そうでなければマッチしなかった他のアイテムがマッチすることを許可せず、そのアイテムがマッチを過度に拡張する可能性があること。C の例: "//" コメントの match は "display" を使用できません。なぜなら、そのコメント内の "/*" がマッチし、行末を越えて拡張するコメントを開始する可能性があるためです。
C 言語で "display" を使用できる例
数値とのマッチ
ラベルとのマッチ
"transparent" 引数が指定された場合、このアイテム自体はハイライトされませんが、それを含んでいるアイテムのハイライトを引き継ぎます。これは、ハイライトする必要はないが、テキストの一部をスキップするためだけに使用される構文アイテムに役立ちます。
"contains=" 引数も、transparent アイテム自体に "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" の後に来るため、優先されるマッチです(同じ位置の最後のマッチは、より前のマッチを上書きします)。"transparent" 引数は、"myVim" マッチが "myString" と同じハイライトを使用するようにします。ただし、何も含みません。"contains=NONE" 引数を省略すると、"myVim" は myString から contains 引数を使用し、"myWord" を含めることを許可し、それがコメントとしてハイライトされます。これは、含まれるマッチが同じ位置で自身の内部でマッチしないため、"myVim" マッチがここで "myWord" マッチを上書きしないために起こります。
色付きのテキストを見ると、含まれるアイテムの層を見ているようです。含まれるアイテムは、それを含んでいるアイテムの上にあり、したがって、含まれるアイテムが見えます。含まれるアイテムが transparent の場合、透けて見ることができ、したがって、それを含んでいるアイテムが見えます。図で説明すると
ここから見てください
| | | | | | V V V V V V
xxxx yyy より多くの含まれるアイテム .................... 含まれるアイテム (transparent) ============================= 最初のアイテム
'x', 'y', '=' はハイライトされた構文アイテムを表します。'.' は transparent なグループを表します。
見えるのは
=======xxxx=======yyy========
したがって、transparent な "...." を透けて見ます。
"oneline" 引数は、リージョンが改行を越えないことを示します。現在の行で完全にマッチする必要があります。ただし、リージョンに改行を越える含まれるアイテムがある場合、とにかく次の行に続きます。含まれるアイテムは、行継続パターンを認識するために使用できます。ただし、"end" パターンは、最初の行でマッチする必要があります。そうしないと、リージョンは開始すらされません。
開始パターンに改行をマッチさせる "\n" が含まれている場合、終了パターンは、開始パターンが終了したのと同じ行で見つかる必要があります。終了パターンには改行を含めることもできます。したがって、"oneline" 引数は、開始パターンの終わりと終了パターンの開始が1行以内にある必要があることを意味します。これは、改行にマッチする skip パターンによって変更することはできません。
"fold" 引数は、このアイテムの折り畳みレベルを 1 つ増やします。例
:syn region myFold start="{" end="}" transparent fold
:syn sync fromstart
:set foldmethod=syntax
これにより、各 {} ブロックが 1 つの折り畳みを形成します。
折り畳みは、アイテムが開始する行で開始され、アイテムが終了する行で終了します。開始と終了が同じ行内にある場合は、折り畳みはありません。
'foldnestmax' オプションは、構文の折り畳みのネストを制限します。行の折り畳みレベルがその構文アイテムからどのように計算されるかを制御するには、
:syn-foldlevel を参照してください。
"contains" 引数の後には、構文グループ名のリストが続きます。これらのグループは、アイテムの内部で開始することを許可されます(包含グループの終わりを越えて拡張される可能性があります)。これにより、マッチとリージョンの再帰的なネストが可能になります。"contains" 引数がない場合、このアイテムにグループは含まれません。グループ名は、ここで使用する前に定義する必要はありません。
contains=ALL contains リストの唯一の項目が "ALL" の場合、すべてのグループがアイテムの内部で受け入れられます。
contains=ALLBUT,{グループ名},.. contains リストの最初の項目が "ALLBUT" の場合、リストされているものを除き、すべてのグループがアイテムの内部で受け入れられます。例
:syntax region Block start="{" end="}" ... contains=ALLBUT,Function
contains=TOP contains リストの最初の項目が "TOP" の場合、"contained" 引数を持たないすべてのグループが受け入れられます。contains=TOP,{グループ名},.. "TOP" と同様ですが、リストされているグループを除外します。
contains=CONTAINED contains リストの最初の項目が "CONTAINED" の場合、"contained" 引数を持つすべてのグループが受け入れられます。contains=CONTAINED,{グループ名},.. "CONTAINED" と同様ですが、リストされているグループを除外します。
"contains" リストの
{グループ名}
はパターンにすることができます。パターンに一致するすべてのグループ名が含まれます(または "ALLBUT" が使用されている場合は除外されます)。パターンには、空白または ',' を含めることはできません。例
... contains=Comment.*,Keyw[0-3]
マッチングは、構文コマンドが実行された時点で行われます。後で定義されたグループはマッチングされません。また、現在の構文コマンドが新しいグループを定義する場合、マッチングされません。注意: 構文コマンドをファイルに入れる場合、グループが定義されていないと頼ることはできません。ファイルが以前にソースされた可能性があり、":syn clear" がグループ名を削除しないためです。
含まれるグループは、リージョンの開始パターンと終了パターンでもマッチします。これが望ましくない場合は、"matchgroup" 引数を使用できます
:syn-matchgroup。"ms=" および "me=" オフセットを使用して、含まれるアイテムがマッチするリージョンを変更できます。これにより、ハイライトされる領域も制限される可能性があることに注意してください。
"containedin" 引数の後には、構文グループ名のリストが続きます。アイテムは、これらのグループの内部で開始することを許可されます。これは、包含アイテムがこのアイテムを含む "contains=" 引数を持っているかのように動作します。
{グループ名}
... は、上で説明したように、"contains" と同様に使用できます。
これは、後から構文アイテムを追加する場合に役立ちます。アイテムを、既存のアイテムの定義を変更せずに、既存のアイテムの内部に含めるように指示できます。たとえば、C の構文をロードした後に C コメントの単語をハイライトするには
:syn keyword myword HELP containedin=cComment contained
アイテムがトップレベルでマッチしないように、"contained" も使用されていることに注意してください。
"containedin" のマッチは、アイテムが表示される他の場所に追加されます。"contains" 引数も通常どおり追加できます。キーワードは別のアイテムを決して含まないため、それらを "containedin" に追加しても機能しないことを忘れないでください。
"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
次の Bar まで可能な限りスキップするために、".\{-} " を使用することに注意してください。".*" を使用すると、"Bar" と "Foo" の間の "asdf" は、ccFoobar グループに従ってハイライトされます。なぜなら、ccFooBar マッチは、行の最初の "Foo" と最後の "Bar" を含むためです(
pattern を参照)。
これらの引数は、"nextgroup" と組み合わせてのみ使用されます。次のグループがいくつかのテキストをスキップした後にマッチできるようにするために使用できます: skipwhite スペースとタブ文字をスキップする skipnl 行末をスキップする skipempty 空行をスキップする("skipnl" を意味します)
"skipwhite" が存在する場合、スペースは、スペースにマッチする次のグループがない場合にのみスキップされます。
"skipnl" が存在する場合、nextgroup を使用したマッチは、次の行で見つかる可能性があります。これは、現在のアイテムが現在の行末で終了する場合にのみ発生します! "skipnl" が存在しない場合、nextgroup は、同じ行の現在のアイテムの後にのみ見つかります。
nextgroup を探しながらテキストをスキップする場合、他のグループのマッチは無視されます。nextgroup がマッチしない場合にのみ、他のアイテムが再びマッチを試行されます。これは、nextgroup をマッチングし、空白と <EOL>
をスキップすることが、他のアイテムよりも高い優先度を持つことを意味します。
例:
:syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty
:syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained
:syn match ifline "endif" contained
[^ \t].* マッチが空白以外のすべてのテキストにマッチすることに注意してください。したがって、"endif" にもマッチします。したがって、"endif" マッチは最後に置かれ、優先されます。この例は、ネストされた "if" に対して機能しないことに注意してください。機能させるには、"contains" 引数を追加する必要があります(例を簡単にするために省略しました)。
: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" のいずれかを表示します。
構文コマンドでは、パターンは 2 つの同一の文字で囲む必要があります。これは、":s" コマンドの場合と同様に動作します。最も一般的なのは二重引用符を使用することです。ただし、パターンに二重引用符が含まれている場合は、パターンで使用されていない別の文字を使用できます。例
:syntax region Comment start="/\*" end="\*/"
:syntax region String start=+"+ end=+"+ skip=+\\"+
パターンの説明については、
pattern を参照してください。構文パターンは、
'magic' オプションの実際の値に関係なく、常に
'magic' オプションが設定されているかのように解釈されます。また、パターンは、'l' フラグが
'cpoptions' に含まれていないかのように解釈されます。これは、構文ファイルを移植可能にし、
'magic' 設定に依存しないようにするために行われました。
「[a-z]*」のような空文字列にマッチする可能性のあるパターンは避けるようにしてください。これはどこにでもマッチするため、ハイライト処理を大幅に遅くします。
:syn-pattern-offset パターンには、文字オフセットを続けることができます。これは、ハイライトされる部分を変更したり、マッチやリージョンに含まれるテキスト領域を変更したりするために使用できます(他のアイテムとマッチさせようとする場合にのみ重要です)。どちらもマッチしたパターンを基準とします。スキップパターンの文字オフセットは、終了パターンを探し続ける場所を示すために使用できます。
オフセットは「{what}={offset}」の形式をとります。{what}
には、次の7つの文字列のいずれかを指定できます。
ms マッチしたテキストの開始位置のオフセット me マッチしたテキストの終了位置のオフセット hs ハイライトの開始位置のオフセット he ハイライトの終了位置のオフセット rs リージョンの本文の開始位置のオフセット re リージョンの本文の終了位置のオフセット lc パターンの「先行コンテキスト」を超えたオフセット
{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」。
すべてのオフセットはどのパターンの後にも指定できますが、常に意味があるわけではありません。この表は、実際に使用されるオフセットを示しています。
ms me hs he rs re lc
match item yes yes yes yes - - yes region item start yes - yes - yes - yes region item skip - yes - - - - yes region item end - yes - yes - yes yes
オフセットは、カンマ「,」で区切って連結できます。例:
:syn match String /"[^"]*"/hs=s+1,he=e-1
some "string" text ^^^^^^ highlighted
注意点
パターンと文字オフセットの間には、空白を入れてはなりません。
ハイライトされる領域が、マッチしたテキストの外になることはありません。
終了パターンの負のオフセットは、ハイライトがすでに停止しているはずのときに終了パターンが検出される可能性があるため、常に機能するとは限りません。
Vim 7.2より前では、オフセットは文字数ではなくバイト数で数えられていました。これはマルチバイト文字ではうまく機能しなかったため、Vim 7.2のリリースで変更されました。
マッチの開始位置は、パターンがマッチした行以外の行にはできません。これは機能しません: 「a\nb」ms=e。ハイライトは別の行から開始できます。これは機能します: 「a\nb」hs=e。
例(コメントにマッチするが、
/*と*/
はハイライトしない)
:syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1
/* this is a comment */
^^^^^^^^^^^^^^^^^^^ highlighted
より複雑な例
: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 match
sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar")
注意: これは廃止された機能であり、以前のVimバージョンとの下位互換性のためだけに含められています。パターンでは、
/\@<=構造を使用することをお勧めします。また、多くの場合、
/\zsを使用することもできます。
「lc」オフセットは、先行コンテキストを指定します。これは、パターン内に存在する必要があるが、マッチの一部とは見なされない部分です。「lc=n」のオフセットを指定すると、Vimはパターンマッチを試行する前にn列戻り、以前のパターンで既にマッチされた文字を、このマッチの先行コンテキストとして使用できるようにします。たとえば、マッチの前に「エスケープ」文字があってはならないことを指定するために使用できます。
:syn match ZNoBackslash "[^\\]z"ms=s+1
:syn match WNoBackslash "[^\\]w"lc=1
:syn match Underline "_\+"
___zzzz ___wwww ^^^ ^^^ matches Underline ^ ^ matches ZNoBackslash ^^^^ matches WNoBackslash
「ms」オフセットは、「ms」を明示的に設定しない限り、「lc」オフセットと同じ値に自動的に設定されます。
パターンには、行末にマッチする「\n」を含めることができます。ほとんどの場合、これは期待どおりに機能しますが、いくつかの例外があります。
オフセットを持つ開始パターンを使用する場合、マッチの開始位置は次の行から開始することはできません。ただし、ハイライトは次の行から開始できます。「\zs」項目を使用する場合も、マッチの開始位置が別の行に移動しないようにする必要があります。
スキップパターンには「\n」を含めることができますが、終了パターンの検索は、スキップパターンがその文字にマッチした場合でも、次の行の最初の文字から継続されます。これは、領域の途中の任意の行から再描画が開始される可能性があり、スキップパターンが前の行から開始されたかどうかを確認するチェックがないためです。たとえば、スキップパターンが「a\nb」で、終了パターンが「b」の場合、終了パターンはこの2行目でマッチします。
x x a
b x x
一般的に、これはスキップパターンが「\n」の後に文字にマッチしてはならないことを意味します。
これらの追加の正規表現項目は、リージョンパターンで使用できます。
/\z( /\z(\) E50 E52 E879 \z(\) サブ式を「外部」としてマークします。つまり、別のパターンマッチからアクセスできます。現在、構文リージョンの開始パターンの定義でのみ使用できます。
リージョンの開始パターンと終了パターンが共通のサブ式を共有する必要がある場合があります。一般的な例は、Perlや多くのUnixシェルでの「here」ドキュメントです。この効果は、「\z」特殊正規表現項目で実現できます。これは、サブ式を「外部」としてマークします。これは、その定義元のパターン外から参照できるという意味です。たとえば、hereドキュメントの例は、次のように記述できます。
:syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$"
ここで見られるように、\zは実際には二重の役割を果たしています。開始パターンでは、「\(\I\i*\)」サブ式を外部としてマークします。終了パターンでは、\z1後方参照を、開始パターンの最初の外部サブ式を参照する外部参照に変更します。外部参照は、スキップパターンでも使用できます。
:syn region foo start="start \z(\I\i*\)" skip="not end \z1" end="end \z1"
通常のサブ式と外部サブ式は完全に直交しており、個別にインデックス付けされていることに注意してください。たとえば、パターン「\z(..\)\(..\)」が文字列「aabb」に適用された場合、\1は「bb」を参照し、\z1は「aa」を参照します。また、外部サブ式は、通常のサブ式のように同じパターン内で後方参照としてアクセスできないことにも注意してください。1つのサブ式を通常のサブ式と外部サブ式の両方として使用する場合は、「\(\z(...\)\)」のように2つをネストできます。
単一行内のマッチのみを使用できることに注意してください。複数行マッチを参照することはできません。
:sy[ntax] cluster {cluster-name}
[contains={group-name}..] [add={group-name}..] [remove={group-name}..]
このコマンドを使用すると、構文グループのリストを単一の名前でクラスタ化できます。
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 " now both keywords are matched in 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 " no effect, since B isn't in BigGroup
:syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff
ある言語の構文ファイルが、関連する言語の構文ファイルをインクルードすることが役立つ場合があります。正確な関係に応じて、これは2つの異なる方法で実行できます。
インクルードされた構文ファイルのトップレベル構文項目を、インクルードする構文のトップレベルで許可する場合は、
:runtimeコマンドを使用するだけで済みます。
" In cpp.vim:
:runtime! syntax/c.vim
:unlet b:current_syntax
インクルードされた構文ファイルのトップレベル構文項目を、インクルードする構文のリージョン内に含める場合は、「:syntax include」コマンドを使用できます。
:sy[ntax] include [@{grouplist-name}] {file-name}
インクルードされたファイルで宣言されたすべての構文項目に、「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>」で始まる)である場合、そのファイルがソースされます。相対パス(例: 「syntax/pod.vim」)である場合、ファイルは
'runtimepath'で検索されます。一致するすべてのファイルがロードされます。相対パスを使用することをお勧めします。これにより、ユーザーは「:syn include」を実行するファイルを置き換えることなく、インクルードされたファイルを独自のバージョンで置き換えることができます。
Vimは、ドキュメント内の任意の位置から再描画を開始できるようにする必要があります。これを可能にするには、再描画が開始される位置での構文状態を知る必要があります。
:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...]
「minlines={N}」引数が指定されている場合、解析は常に少なくともその行数だけ後ろから開始されます。これは、解析が正しくなるまでに数行かかる場合、または同期を使用できない場合に使用できます。
「maxlines={N}」引数が指定されている場合、コメントまたは同期パターンを検索する行数は、(「minlines」を追加した後)N行後に制限されます。これは、同期するものが少なく、マシンの速度が遅い場合に役立ちます。例:
:syntax sync maxlines=500 ccomment
:syn-sync-linebreaks 複数行にマッチするパターンを使用する場合、1行の変更によって前の行でパターンがマッチしなくなる可能性があります。これは、変更が加えられた位置より上で開始する必要があることを意味します。行数は、「linebreaks」引数で指定できます。たとえば、パターンに1つの改行を含めることができる場合は、次を使用します
:syntax sync linebreaks=1
結果として、再描画は常に、変更が行われた箇所よりも少なくとも1行前で開始されます。「linebreaks」のデフォルト値はゼロです。通常、「minlines」の値は「linebreaks」よりも大きくなります。
最初の同期方法:
:syn-sync-first
:syntax sync fromstart
ファイルは最初から解析されます。これにより、構文のハイライトは正確になりますが、長いファイルの場合は遅くなる可能性があります。Vimは以前に解析されたテキストをキャッシュするため、テキストを最初に解析するときのみ遅くなります。ただし、変更を加える場合、テキストの一部を再度解析する必要があります(最悪の場合:ファイルの最後まで)。
「fromstart」を使用することは、非常に大きな数で「minlines」を使用することと同じです。
2番目の方法では、「ccomment」引数のみを指定する必要があります。例
:syntax sync ccomment
Vimが表示を開始する行がCスタイルのコメント内にあることを検出した場合、グループ名「Comment」を持つ最後の領域構文項目が使用されます。これには、グループ名「Comment」を持つ領域が必要です!代替のグループ名を指定できます。例:
:syntax sync ccomment javaComment
これは、「syn region javaComment」で指定された最後の項目が、検出されたCコメント領域に使用されることを意味します。これは、その領域が開始パターン「\/*」と終了パターン「*\/」を持っている場合にのみ適切に機能します。
「maxlines」引数を使用して、検索を特定の行数に制限できます。「minlines」引数を使用して、少なくとも指定された行数だけ遡って開始できます(たとえば、数行しかかからないが、同期するのが難しい構造がある場合など)。
注:文字列が行をまたぎ、「*/」を含む場合、Cコメントでの同期は適切に機能しません。文字列が行をまたぐのは悪いプログラミング習慣(多くのコンパイラが警告メッセージを出す)であり、コメント内に「*/」が現れる可能性は非常に小さいため、この制限に気付くことはほとんどありません。
3番目の方法では、「minlines={N}」引数のみを指定する必要があります。Vimは行番号から
{N}
を減算し、そこから解析を開始します。これは、
{N}
行多く解析する必要があることを意味し、この方法を少し遅くします。例
:syntax sync minlines=50
「lines」は「minlines」(古いバージョンで使用)と同等です。
この考え方は、同期パターンと呼ばれるいくつかの特定の領域の終わりに同期することです。行をまたぐことができるのは領域だけなので、いくつかの領域の終わりを見つけると、どの構文項目にいるかを知ることができるかもしれません。検索は、再描画が開始される行のすぐ上の行から開始されます。そこから、検索はファイル内で後方に続行されます。
これは、同期しない構文項目と同じように機能します。含まれる一致、nextgroupなどを利用できます。ただし、いくつかの違いがあります。
キーワードは使用できません。
「sync」キーワードを持つ構文項目は、完全に分離された構文項目のグループを形成します。同期グループと非同期グループを混在させることはできません。
照合は、前方ではなく、バッファ内で後方(行ごと)に機能します。
行継続パターンを指定できます。これは、どの行グループを1行のように検索する必要があるかを決定するために使用されます。つまり、指定された項目との一致の検索は、継続パターンを含む連続する行の最初の行で開始されます。
「nextgroup」または「contains」を使用する場合、これは1行(または継続された行のグループ)内でのみ機能します。
領域を使用する場合、同じ行(または継続された行のグループ)で開始および終了する必要があります。それ以外の場合、終了は行の終わり(または継続された行のグループ)にあると見なされます。
同期パターンとの一致が見つかった場合、行の残りの部分(または継続された行のグループ)で別の照合が検索されます。最後の照合が使用されます。これは、行に領域の開始と終了の両方を含めることができる場合に使用されます(例:/* this */
のようなCコメントでは、最後の「*/」が使用されます)。
同期パターンとの一致を使用する方法は2つあります。1. ハイライトのための解析は、再描画が開始される場所(および同期パターンの検索が開始された場所)で開始されます。そこで有効であると予想される構文グループを指定する必要があります。これは、行をまたぐ領域に他の領域を含めることができない場合にうまく機能します。2. ハイライトのための解析は、一致の直後から継続されます。一致の直後に存在すると予想される構文グループを指定する必要があります。これは、前の方法がうまく機能しない場合に使用できます。解析する必要があるテキストが多いため、はるかに遅くなります。両方のタイプの同期パターンを同時に使用できます。
同期パターンに加えて、不要な一致が見つからないように、他の一致と領域を指定できます。
[同期パターンが個別に与えられる理由は、主に、同期ポイントの検索が、ハイライトを理解するよりもはるかに単純である可能性があるためです。パターンの数が減るということは、(はるかに)高速になることを意味します。]
同期に使用される一致を定義します。{group-name}
は、一致の直後に続く構文グループの名前です。ハイライトのためのテキストの解析は、一致の直後から開始されます。この{group-name}
には、領域が存在する必要があります。最初に定義されたものが使用されます。一致後に構文グループがない場合は「NONE」を使用できます。
「grouphere」と同様ですが、{group-name}
は、同期ポイントの検索が開始された行の開始時に使用される構文グループの名前です。一致と同期パターン検索の開始の間のテキストは、構文のハイライトを変更しないと想定されます。たとえば、Cでは、「/*」と「*/」を後方検索できます。「/*」が最初に見つかった場合、コメント内にあることがわかるため、「groupthere」は「cComment」です。「*/」が最初に見つかった場合、コメント内にいないことがわかるため、「groupthere」は「NONE」です。(実際には、「/*」と「*/」が文字列内に表示される可能性があるため、少し複雑です。それは読者の練習問題として残されています...)。
:syntax sync match .. :syntax sync region ..
「groupthere」引数なし。同期ポイントの検索中にスキップされる領域または一致を定義します。
{pattern}
が1行で一致する場合、次の行に継続すると見なされます。つまり、同期ポイントの検索では、行が連結されていると見なされます。
「maxlines={N}」引数も指定されている場合、一致が検索される行数はNに制限されます。これは、同期するものが非常に少なく、マシンが遅い場合に役立ちます。例
:syntax sync maxlines=100
次のコマンドで、すべての同期設定をクリアできます。
:syntax sync clear
次のコマンドで、特定の同期パターンをクリアできます。
:syntax sync clear {sync-group-name} ..
このコマンドは、すべての構文項目をリストします。
:sy[ntax] [list]
1つの構文グループの構文項目を表示するには
:sy[ntax] list {group-name}
1つのクラスター内の構文グループをリストするには:
E392:sy[ntax] list @{cluster-name}
「:syntax」コマンドの他の引については上記を参照してください。
「:syntax」コマンドは「:sy」に省略できますが、「:syn」は見た目が良いため、ほとんどの場合使用されます。
ハイライトグループには2つのタイプがあります。
特定の言語で使用されるもの。これらについては、名前が言語の名前で始まります。これらの多くには属性がありませんが、2番目のタイプのグループにリンクされています。
hitest.vim現在アクティブなすべてのグループは、次のコマンドで確認できます。
:so $VIMRUNTIME/syntax/hitest.vim
これにより、すべてのハイライトグループ名が独自のカラーで表示された新しいウィンドウが開きます。
g:colors_nameが定義されていない場合、:coloは「default」を出力します。
:colo[rscheme]
{name}
カラースキーム
{name}
をロードします。これは、
'runtimepath'でファイル「colors/{name}.{vim,lua}」を検索します。最初に見つかったものがロードされます。
注:最初に「colors/{name}.vim」が試行されます。また、
'packpath'のすべてのプラグインも検索します。最初に「start」の下、次に「opt」の下を検索します。
再帰的に機能しないため、カラースキームスクリプトで「:colorscheme」を使用することはできません。
カラースキームをカスタマイズするには、別の名前(例:〜/.config/nvim/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 {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
含まれていないすべての設定は同じままになり、指定されたフィールドのみが使用され、設定は以前の設定とマージされることに注意してください。したがって、結果は、次の単一のコマンドが使用された場合と同じになります。
:hi Comment ctermfg=Cyan guifg=#80a0ff gui=bold
Comment xxx ctermfg=4 guifg=Blue
最後の設定は /home/mool/vim/vim7/runtime/syntax/syncolor.vim からのものです
":hi clear" を使用すると、このコマンドが使用されたスクリプトがデフォルト値について言及されます。詳細については、
:verbose-cmd を参照してください。
各タイプに対してハイライトを設定できます。これにより、すべてのUIで同じ構文ファイルを使用できます。
1. TUI ハイライト引数
"bold" はここで使用でき、太字フォントを使用することでも同じ効果が得られます。"undercurl"、"underdouble"、"underdotted"、"underdashed" は、それらをサポートしていないターミナルでは "underline" にフォールバックします。色は
guisp を使用して設定されます。
"start" 引数で指定されたエスケープシーケンスは、ハイライトされた領域の文字の前に書き込まれます。これは、この領域をハイライトするためにターミナルに送信したい任意のものです。"stop" 引数で指定されたエスケープシーケンスは、ハイライトされた領域の後に書き込まれます。これは "start" 引数を元に戻す必要があります。そうしないと、画面が見苦しくなります。
{term-list}
はエスケープシーケンスを含む文字列です。これは任意の文字の文字列ですが、"t_" で始まることはできず、空白は許可されません。 <> 表記はここで認識されるため、"<Esc>" や "<Space>" のようなものを使用できます。例:start=<Esc>[27h;<Esc>[<Space>
r;
ctermfg={color-nr}
ctermfg E421 ctermbg={color-nr}
ctermbg{color-nr}
引数は色の番号です。その範囲は、利用可能な
tui-colors の数までのゼロからです。この番号を持つ実際の色は、ターミナルの種類とその設定によって異なります。場合によっては、"cterm" の設定にも色が依存します。たとえば、一部のシステムでは、"cterm=bold ctermfg=3" は別の色になり、他のシステムでは単に色3になります。
次の(大文字と小文字を区別しない)名前が認識されます。
cterm-colors
NR-16 NR-8 色の名前
0 0 黒 1 4 ダークブルー 2 2 ダークグリーン 3 6 ダークシアン 4 1 ダークレッド 5 5 ダークマゼンタ 6 3 茶色、ダークイエロー 7 7 ライトグレー、ライトグレー、グレー、グレー 8 0* ダークグレー、ダークグレー 9 4* ブルー、ライトブルー 10 2* グリーン、ライトグリーン 11 6* シアン、ライトシアン 12 1* レッド、ライトレッド 13 5* マゼンタ、ライトマゼンタ 14 3* イエロー、ライトイエロー 15 7* 白
"NR-16" の下の数字は、16色ターミナル ('t_Co' が 16 以上) に使用されます。"NR-8" の下の数字は、8色ターミナル ('t_Co' が 16 未満) に使用されます。"*" は、ctermfg に太字属性が設定されていることを示します。多くの8色ターミナル(例:"linux")では、これにより明るい色が表示されます。これは背景色では機能しません!"*" なしでは、太字属性が削除されます。別の方法で太字属性を設定する場合は、"ctermfg=" または "ctermbg=" 引数の後に "cterm=" 引数を配置します。または、色の名前の代わりに数字を使用します。
16色ANSIスタイルのターミナル(xtermなど)では、NR-8列の数字が使用されることに注意してください。ここで "*" は「8を追加する」ことを意味するため、ブルーは12、ダークグレーは8などになります。
一部のカラーターミナルでは、これらの名前が間違った色になる可能性があることに注意してください!
色を削除するために "NONE" を使用することもできます。
:hi-normal-cterm Normalグループの "ctermfg" または "ctermbg" 色を設定すると、これらはハイライトされていないテキストに使用される色になります。例
:highlight Normal ctermfg=grey ctermbg=darkblue
Normalグループの "ctermbg" 色を設定すると、色が認識され、
'background' が明示的に設定されていない場合に、
'background' オプションが自動的に調整されます。これにより、
'background' に依存するハイライトグループが変更されます!これは、他の色を設定する前に、最初にNormalの色を設定する必要があることを意味します。カラースキームが使用されている場合、
'background' を変更すると、カラースキームがリロードされ、すべての色(Normalを含む)がリセットされる可能性があります。これを望まない場合は、最初に "g:colors_name" 変数を削除します。
Normalグループに "ctermfg" または "ctermbg" を設定した場合、Vimは終了時に色をリセットする必要があります。これは、"orig_pair"
terminfo エントリを使用して行われます。
E419 E420 Vimが通常のフォアグラウンドとバックグラウンドの色を認識している場合、"fg" と "bg" を色の名前として使用できます。これは、Normalグループの色とMS-Windowsコンソールの色を設定した後にのみ機能します。例、反転ビデオの場合
:highlight Visual ctermfg=bg ctermbg=fg
色は、このコマンドが指定された瞬間に有効なものが使用されることに注意してください。後でNormalグループの色が変更された場合、"fg" と "bg" の色は調整されません。
2. GUI ハイライト引数
gui={attr-list}
highlight-guiこれらはGUIモードで使用する属性を提供します。説明については、
attr-list を参照してください。"bold" はここで使用でき、太字フォントを使用することでも同じ効果が得られることに注意してください。属性は "Normal" グループでは無視されることに注意してください。
font={font-name}
highlight-fontfont-name は、Vim が実行されているシステムで使用されるフォントの名前です。X11 の場合、これは複雑な名前になります。例:
font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1
font-name "NONE" を使用して、デフォルトフォントに戻すことができます。"Normal" グループのフォントを設定すると、これがデフォルトフォントになります (
'guifont' オプションが変更されるまで。最後に設定されたものが使用されます)。次のものはMotifでのみ機能し、他のGUIでは機能しません。"Menu" グループのフォントを設定すると、メニューが変更されます。"Tooltip" グループのフォントを設定すると、ツールチップが変更されます。メニューとツールチップを除く、使用するすべてのフォントは、デフォルトフォントと同じ文字サイズである必要があります!そうしないと、再描画の問題が発生します。空白やその他の特殊文字が埋め込まれたフォント名を使用するには、一重引用符で囲みます。一重引用符は使用できません。例
:hi comment font='Monospace 10'
guifg={color-name}
guifgguibg={color-name}
guibgguisp={color-name}
guispこれらは、GUIで使用するフォアグラウンド (guifg)、バックグラウンド (guibg)、および特殊 (guisp) 色を指定します。"guisp" は、さまざまな下線に使用されます。いくつかの特殊な名前があります。 NONE 色なし(透明) bg 通常の背景色を使用 background 通常の背景色を使用 fg 通常の前景色を使用 foreground 通常の前景色を使用 空白やその他の特殊文字が埋め込まれた色の名前を使用するには、一重引用符で囲みます。一重引用符は使用できません。例
:hi comment guifg='salmon pink'
gui-colors 推奨される色の名前 (これらはほとんどのシステムで利用可能です): レッド ライトレッド ダークレッド グリーン ライトグリーン ダークグリーン シーグリーン ブルー ライトブルー ダークブルー スレートブルー シアン ライトシアン ダークシアン マゼンタ ライトマゼンタ ダークマゼンタ イエロー ライトイエロー ブラウン ダークイエロー グレー ライトグレー ダークグレー ブラック ホワイト オレンジ パープル バイオレット
Nvimのデフォルトのカラースキームを定義する色:NvimDarkBlue NvimLightBlue NvimDarkCyan NvimLightCyan NvimDarkGray1 NvimLightGray1 NvimDarkGray2 NvimLightGray2 NvimDarkGray3 NvimLightGray3 NvimDarkGray4 NvimLightGray4 NvimDarkGreen NvimLightGreen NvimDarkMagenta NvimLightMagenta NvimDarkRed NvimLightRed NvimDarkYellow NvimLightYellow
色をRGB (赤、緑、青) の値で指定することもできます。形式は "#rrggbb" です。ここで、"rr" は赤の値、"gg" は緑の値、"bb" は青の値です。すべての値は16進数で、"00" から "ff" の範囲です。例
:highlight Comment guifg=#11f0c3 guibg=#ff00ff
GUIでは、メニュー、スクロールバー、ツールチップの色を設定するために、以下のグループを使用できます。これらにはデフォルト設定はありません。これはWin32 GUIでは機能しません。ここでは、font、guibg、guifgの3つのハイライト引数のみが有効です。
Menu メニューの現在のフォント、背景色、前景色。ツールバーにも使用されます。適用可能なハイライト引数:font、guibg、guifg。
hl-Scrollbar Scrollbar メインウィンドウのスクロールバーの現在の背景色と前景色。適用可能なハイライト引数:guibg、guifg。
hl-Tooltip Tooltip ツールチップの現在のフォント、背景色、前景色。適用可能なハイライト引数:font、guibg、guifg。
複数の構文グループに対して同じハイライトを使用したい場合、グループを1つの共通のハイライトグループにリンクし、そのグループに対してのみ色属性を指定することで、より簡単に実現できます。
リンクを設定するには
:hi[ghlight][!] [default] link {from-group}
{to-group}
リンクを削除するには
:hi[ghlight][!] [default] link {from-group}
NONE
注: E414
{from-group}
または{to-group}
が存在しない場合、それは作成されます。存在しないグループに対するエラーメッセージは表示されません。
リンクされたグループに対して":highlight"コマンドを使用するとすぐに、リンクは削除されます。
{from-group}
に既にハイライト設定がある場合、'!'が指定されていない限り、リンクは作成されません。ソースファイル内の":highlight link"コマンドの場合、エラーメッセージは表示されません。これは、既に設定があるグループのリンクをスキップするために使用できます。
[default]を使用することは、特定の構文ファイルのハイライトを上書きするのに特に役立ちます。例えば、C構文ファイルには以下が含まれます。
:highlight default link cComment Comment
CコメントにQuestionハイライトを使用したい場合は、vimrcファイルに以下を記述します。
:highlight link cComment Question
C構文ファイルに"default"がない場合、構文ファイルがロードされるとハイライトは上書きされます。
:highlight clear
を実行してもリンクが存続するようにするには、特定のファイルタイプに対してハイライトがあり、別のカラースキームを選択したときにそれを保持したい場合に便利です。 "after/syntax/{filetype}.vim" ファイルに次のようなコマンドを記述します。
highlight! default link cComment Question
現在のバッファの構文設定をクリアしたい場合は、このコマンドを使用できます。
:syntax clear
このコマンドは、構文ハイライトをオフにしたい場合、または別の構文を使用するように切り替えたい場合に使用する必要があります。構文ファイル自体では通常必要ありません。構文ファイルは構文ファイルをロードする自動コマンドによってクリアされるためです。このコマンドは、このコマンドの後に構文がロードされないため、変数 "b:current_syntax" も削除します。
現在のバッファの特定の構文グループをクリーンアップするには
:syntax clear {group-name} ..
これにより、
{group-name}
のすべてのパターンとキーワードが削除されます。
現在のバッファの特定の構文グループリストをクリーンアップするには
:syntax clear @{grouplist-name} ..
これにより、
{grouplist-name}
の内容が空のリストに設定されます。
:syntax-off :syn-off すべてのバッファで構文ハイライトを無効にしたい場合は、構文ファイルをロードする自動コマンドを削除する必要があります。
:syntax off
このコマンドが実際に実行することは、次のコマンドを実行することです。
:source $VIMRUNTIME/syntax/nosyntax.vim
詳細については、"nosyntax.vim"ファイルを参照してください。これが機能するためには、$VIMRUNTIMEが有効である必要があることに注意してください。
$VIMRUNTIMEを参照してください。
:syntax-reset :syn-reset 色を変更して混乱させた場合は、このコマンドを使用してデフォルトに戻します。
:syntax reset
これは少し間違った名前です。構文アイテムをリセットするのではなく、ハイライトにのみ影響を与えるためです。
vimrcファイルで設定した構文の色も、Vimのデフォルトに戻されることに注意してください。カラースキームを使用している場合、構文ハイライトのためにカラースキームで定義された色が失われることに注意してください。
カラースキームを使用すると、定義した色が使用されるのか、スキームの色が使用されるのか混乱する可能性があります。これはカラースキームファイルによって異なります。
:colorschemeを参照してください。
ファイル内のすべてのタグを強調表示したい場合は、次のマッピングを使用できます。
<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>
警告: タグファイルが長ければ長いほど、これは遅くなり、Vimが消費するメモリも多くなります。
typedef、union、structのみを強調表示することもできます。これには、Universal Ctags(
https://ctags.io)またはExuberant ctagsを使用する必要があります。
これらの行をMakefileに記述します。
# Make a highlight file for types. Requires Universal/Exuberant ctags and 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
通常、バッファ上のすべてのウィンドウは同じ構文設定を共有します。ただし、ファイル上の特定のウィンドウに独自のプライベート構文設定を設定することができます。可能な例としては、あるウィンドウで従来のハイライトを使用してLaTeXソースを編集し、別のウィンドウで同じソースを異なる方法でハイライト(制御シーケンスを非表示にし、太字、斜体などを表示)することが挙げられます。
'scrollbind'オプションがここで役立ちます。
バッファ上の他のすべてのウィンドウとは別に、現在のウィンドウに構文「foo」を設定するには
:ownsyntax foo
ウィンドウが独自の構文を持つと、同じバッファ上の他のウィンドウから実行された構文コマンド(:syntax clearを含む)は効果がありません。逆に、そのウィンドウから実行された構文コマンドは、同じバッファ上の他のウィンドウには影響しません。
独自の構文を持つウィンドウは、別のバッファがそのウィンドウにロードされたり、ファイルがリロードされたりすると、通常の動作に戻ります。ウィンドウを分割すると、新しいウィンドウは元の構文を使用します。
colortest.vim カラー設定をテストするために、ファイルがVimディストリビューションに含まれています。これを使用するには、次のコマンドを実行します。
:runtime syntax/colortest.vim
Nvimは、可能な限り256色および
トゥルーカラー端末機能を使用します。
これは、構文ファイルの作成者を対象としています。
どのパターンが最も時間を消費しているかを確認するには、次のシーケンスで概要を取得します。
:syntime on
[ redraw the text at least once with CTRL-L ]
:syntime report
これにより、使用された構文パターンのリストが表示され、テキストとの照合にかかった時間でソートされます。
:syntime on 構文時間の測定を開始します。これにより、構文パターンマッチングに費やされた時間を計算するためのオーバーヘッドが追加されます。
:syntime off 構文時間の測定を停止します。
:syntime clear すべてのカウンターをゼロに設定し、測定を再開します。
:syntime report 現在のウィンドウで ":syntime on" 以降に使用された構文項目を表示します。出力の詳細を表示するには、より広い表示を使用します。
リストは合計時間でソートされます。列は次のとおりです。TOTAL このパターンに一致するのに費やされた合計時間(秒単位)。COUNT パターンが使用された回数。MATCH パターンが実際に一致した回数。SLOWEST 1回の試行で最長の時間。AVERAGE 1回の試行の平均時間。NAME 構文項目の名前。これは一意ではないことに注意してください。PATTERN 使用されているパターン。
パターンマッチングは、多くの代替案を試す必要がある場合に遅くなります。パターンが一致しない方法の数を減らすために、できるだけ多くのリテラルテキストを含めるようにしてください。
"\@<=" および "\@<!" アイテムを使用する場合は、現在の行と前の行のすべての位置で試行しないように、最大サイズを追加します。例えば、項目がリテラルテキストの場合は、そのテキストのサイズ(バイト単位)を指定します。
"<\@<=span" は "<span" の "span" に一致します。これは、多くの場所で "<" で一致させようとします。 "<\@1<=span" は同じように一致しますが、"span" の1バイト前だけを試行します。