*filetype.txt*	For Vim バージョン 9.1.  Last change: 2025 Dec 07


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


ファイル形式						*filetype* *file-type*

1. ファイル形式					|filetypes|
2. ファイル形式別プラグイン			|filetype-plugins|
3. 標準で付属する形式別プラグインの解説		|ftplugin-docs|

|autocmd.txt|も参照。


==============================================================================
1. ファイル形式					*filetypes* *file-types*

Vimは編集しているファイルの形式を検出することができる。これはファイル名をチェ
ックしたり、場合によってはファイル内に特定のテキストがあるかを調べることで実現
されている。

							*:filetype* *:filet*
ファイル形式の検出を有効化するには、vimrcファイルでこのコマンドを使用する: >
	:filetype on
新しいファイルや既存のファイルを編集する際には必ず、Vimはファイルの形式を認識
し 'filetype' オプションを設定しようと試みる。それが構文強調やオプションの設
定、その他を行うために使われるFileTypeイベントのきっかけとなる。

NOTE: Vi互換とは全てのオプションがグローバルであることを意味するので、ファイル
形式識別と 'compatible' は同時に使うことはできない。既に 'compatible'を設定し
ている場合には、それを解除する必要がある。

詳細: ":filetype on" コマンドは次のファイルのうち1つをロードする。
		Amiga	    $VIMRUNTIME/filetype.vim
		Mac	    $VIMRUNTIME:filetype.vim
		MS-Windows  $VIMRUNTIME\filetype.vim
		Unix	    $VIMRUNTIME/filetype.vim
		VMS	    $VIMRUNTIME/filetype.vim
	このファイルはBufNewFileとBufReadイベントに対する自動実行コマンドを定
	義するVim scriptファイルである。ファイル形式がファイル名から決定できな
	い時には、ファイルの内容を検出するために$VIMRUNTIME/scripts.vimが使用
	される。
	GUIで使用しているとき、またはGUIを開始しようとしているときには、
	|menu.vim| も読み込まれる。これを避けるには |'go-M'| を参照。

独自のファイルタイプを追加するには、下の|new-filetype|を参照。あるファイルタイ
プについてのヘルプを検索するには、ファイルタイプ名の前に "ft-" をつけ、さらに
必要に応じて "-syntax", "-indent", "-plugin" をつける。例: >
	:help ft-vim-indent
	:help ft-vim-syntax
	:help ft-man-plugin

ファイル形式を自動的に検出できなかった場合や、間違った形式になってしまった場合
には、'filetype' オプションを手動で設定するか、ファイルにモード行(modeline)を
追加する選択肢がある。例として、IDLファイルに設定するにはこのコマンドを使うか:
>
	:set filetype=idl

この|modeline|をファイルに追加する:
	/* vim: set filetype=idl : */ ~

						*:filetype-plugin-on*
ファイル形式別プラグインのロードを有効化するには: >
	:filetype plugin on
まだファイル形式検出が有効になっていない時には、同時に有効化される。
これは実際には 'runtimepath' にある "ftplugin.vim" をロードする。
結果的にファイルが編集される時に対応するプラグインファイルがロードされる(ただ
し検出したファイル形式に合致するプラグインファイルがあった時のみ)。
|filetype-plugin|

						*:filetype-plugin-off*
ファイル形式別プラグインを無効化するには: >
	:filetype plugin off
ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に
した場合には、プラグインもロードされなくなる。
これは実際には 'runtimepath' にある "ftplugof.vim" をロードする。

						*:filetype-indent-on*
ファイル形式別インデントのロードを有効化するには: >
	:filetype indent on
まだファイル形式検出が有効になっていない時には、同時に有効化される。
これは実際には 'runtimepath' にある "indent.vim" をロードする。
結果的にファイルが編集される時に対応するインデントファイルがロードされる(ただ
し検出したファイル形式に合致するインデントファイルがあった時のみ)。
|filetype-plugin|

						*:filetype-indent-off*
ファイル形式別インデントを無効化するには: >
	:filetype indent off
ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に
した場合には、インデントファイルもロードされなくなる。
これは実際には 'runtimepath' にある "indoff.vim" をロードする。
そうすると、これから開くファイルに対して自動インデントが無効になる。すでに開い
ているファイルに対しては何も変わらない。すでに開いているファイルに対して自動イ
ンデントを無効にするには 'autoindent', 'cindent', 'smartindent', 'indentexpr'
をオフにする。

						*:filetype-off*
ファイル形式の検出を無効にするには、次のコマンドを使用する: >
	:filetype off
これはプラグイン("plugin")とインデント("indent")のフラグを保持はするが、ファイ
ル形式は検出されなくなるので、次に ":filetype on" をするまではそれらは動作しな
くなる。


概要:						*:filetype-overview*

コマンド			検出		プラグイン	インデント ~
:filetype on			有効		変化なし	変化なし
:filetype off			無効		変化なし	変化なし
:filetype plugin on		有効		有効		変化なし
:filetype plugin off		変化なし	無効		変化なし
:filetype indent on		有効		変化なし	有効
:filetype indent off		変化なし	変化なし	無効
:filetype plugin indent on	有効		有効		有効
:filetype plugin indent off	変化なし	無効		無効

現在の状態を知るには次のようにタイプする: >
	:filetype
このような出力が得られる: >
	filetype detection:ON  plugin:ON  indent:OFF

ファイル形式は構文強調にも利用される。":syntax on" コマンドが使用されると、ファ
イル形式検出もインストールされる。":syntax on" の後に ":filetype on" を実行す
る必要はない。

特定のファイル形式を無効にするには、自分のファイル形式ファイルに1行追加する。
|remove-filetype|参照。

							*filetype-detect*
再びファイル検出を有効化するには: >
	:filetype detect
空のファイルから編集を始めて、ファイル形式を判定するのに充分なテキストをタイプ
してからコレを使用する。例えば、シェルスクリプトの中で "#!/bin/csh" を入力して
からということ。
   ファイル形式検出が無効になっていた時には、引数 "on" が指定された時のように、
初めに有効化される。

							*filetype-overrule*
同じ拡張子が複数のファイル形式で使用されている時には、Vimはファイルがどのよう
な種類であるかを推測する。これは常に動作するわけではない。ある拡張子に対してど
のファイル形式を使うか明示的に指定するのに、幾つかのグローバル変数を使うことが
できる:

	ファイル名	変数 ~
	*.app		g:filetype_app
	*.asa		g:filetype_asa		|ft-aspperl-syntax|
						|ft-aspvbs-syntax|
	*.asm		g:asmsyntax		|ft-asm-syntax|
	*.asp		g:filetype_asp		|ft-aspperl-syntax|
						|ft-aspvbs-syntax|
	*.bas		g:filetype_bas		|ft-basic-syntax|
	*.cfg		g:filetype_cfg
	*.cls		g:filetype_cls
	*.csh		g:filetype_csh		|ft-csh-syntax|
	*.dat		g:filetype_dat
	*.def		g:filetype_def
	*.dsp		g:filetype_dsp
	*.f		g:filetype_f		|ft-forth-syntax|
	*.frm		g:filetype_frm		|ft-form-syntax|
	*.fs		g:filetype_fs		|ft-forth-syntax|
	*.h		g:c_syntax_for_h	|ft-c-syntax|	(非推奨)
	*.h		g:ch_syntax_for_h	|ft-ch-syntax|	(非推奨)
	*.h		g:filetype_h		|ft-c-syntax|
						|ft-ch-syntax|
						|ft-cpp-syntax|
	*.i		g:filetype_i		|ft-progress-syntax|
	*.inc		g:filetype_inc
	*.lsl		g:filetype_lsl
	*.m		g:filetype_m		|ft-mathematica-syntax|
	*[mM]makefile,*.mk,*.mak,[mM]akefile*
			g:make_flavor		|ft-make-syntax|
	*.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md
			g:filetype_md		|ft-pandoc-syntax|
	*.mod		g:filetype_mod
	*.p		g:filetype_p		|ft-pascal-syntax|
	*.pl		g:filetype_pl
	*.pp		g:filetype_pp		|ft-pascal-syntax|
	*.prg		g:filetype_prg
	*.r		g:filetype_r
	*.sig		g:filetype_sig
	*.sql		g:filetype_sql		|ft-sql-syntax|
	*.src		g:filetype_src
	*.sys		g:filetype_sys
	*.sh		g:bash_is_sh		|ft-sh-syntax|
	*.tex		g:tex_flavor		|ft-tex-plugin|
	*.typ		g:filetype_typ
	*.v		g:filetype_v
	*.w		g:filetype_w		|ft-cweb-syntax|

いくつかのファイル形式のグローバル変数はファイル形式を検知できなかったときのみ
使用される:
	*.r		g:filetype_r	|ft-rexx-syntax|

							*filetype-ignore*
特定のファイルが検査されないようにするには、g:ft_ignore_pat 変数を使う。この変
数はデフォルトで次のように設定されている。 >
	:let g:ft_ignroe_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
この設定は圧縮ファイルを検査しないようにしている。

							*new-filetype*
使いたいファイル形式がVimに検出されない(存在しない)場合には、その形式を追加す
る4つの方法がある。どちらにせよファイル$VIMRUNTIME/filetype.vimは変更するべき
ではない。そのファイルは新しいVimをインストールする際に上書されるのだから。

A. デフォルトのファイルタイプの検査をくつがえす。
   この方法はファイルタイプごとにファイルを作ることで機能する。不便な点は
   ファイルがたくさんになってしまうこと。便利な点は適切なディレクトリにファ
   イルを置くだけで機能すること。
							*ftdetect*
   1. ユーザーランタイムディレクトリを作成する。通常は 'runtimepath' オプション
      に記載される最初の項目を使えば良い。次にそのディレクトリに "ftdetect" と
      いうディレクトリを作成する。UNIXを例に挙げる: >
	:!mkdir ~/.vim
	:!mkdir ~/.vim/ftdetect
<
   2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。
      例: >
	au BufRead,BufNewFile *.mine		set filetype=mine
<     Note "augroup" コマンドは要らない。そのファイルを読み込むときに既に定
      義されている。パターンに "*" を使いファイルの内容から判断することもで
      きる。
      そのファイルを例えば "mine.vim" という名前で先程の "ftdetect" ディレク
      トリに保存する。UNIXを例に挙げる: >
	:w ~/.vim/ftdetect/mine.vim
<
   3. 新しいファイル形式の検出を有効化するにはVimを再起動しなければならない。

   "ftdetect" ディレクトリの中のファイルはデフォルトの検査のあとに使われるの
   で、それ以前に決定したファイルタイプを変更することができる。しかしここで
   |:setfiletype|を使えば、それ以前に決定したファイルタイプをそのままにしてお
   くこともできる。

B. デフォルトのファイルタイプの検査の後にファイルタイプを決定する。

   上と同様。ただし、無条件に 'filetype' を設定する代わりに、':setfiletype' を
   使う。これはファイルタイプがまだ認識されていないときだけ 'filetype' を設定
   する。次に例を示す。 >
	au BufRead,BufNewFile *.txt		setfiletype text
<
   すでに認識されたファイルタイプをコマンドから使うことができる。例えば、ファ
   イルタイプが "pascal" だった時にファイルタイプを "mypascal" に設定するには: >
	au BufRead,BufNewFile *		if &ft == 'pascal' | set ft=mypascal
								       | endif

C. ファイル形式が名前だけで検出できる場合。
   1. ユーザーランタイムディレクトリを作成する。通常は 'runtimepath' オプション
      に記載される最初の項目を使えば良い。UNIXを例に挙げる: >
	:!mkdir ~/.vim
<
   2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。
      例: >
	" 独自の filetype ファイル
	if exists("did_load_filetypes")
	  finish
	endif
	augroup filetypedetect
	  au! BufRead,BufNewFile *.mine		setfiletype mine
	  au! BufRead,BufNewFile *.xyz		setfiletype drawing
	augroup END
<     このファイルを "filetype.vim" としてユーザーランタイムディレクトリに保存
      する。UNIXを例にあげる: >
	:w ~/.vim/filetype.vim
<
   3. 新しいファイル形式の検出を有効化するためにVimを再起動する。

   作成したfiletype.vimはデフォルトのFileType自動実行コマンドがインストールさ
   れる前に読み込まれる。そのため新しく作成した自動実行コマンドが先に適合し、
   ":setfiletype" コマンドがこれ以後に他の自動実行コマンドにより 'filetype' が
   設定されないことを保証する。
							*new-filetype-scripts*
D. ファイル形式がファイルの内容を調べる事によってのみ検出可能な場合。

   1. ユーザーランタイムディレクトリを作成する。通常は 'runtimepath' オプション
      に記載される最初の項目を使えば良い。UNIXを例に挙げる: >
	:!mkdir ~/.vim
<
   2. ファイルの内容で形式を決定する Vim script を作成する。例: >
	if did_filetype()	" 既にファイル形式が決定している
	  finish		" ..その時はこのチェックは行わない
	endif
	if getline(1) =~ '^#!.*\<mine\>'
	  setfiletype mine
	elseif getline(1) =~? '\<drawing\>'
	  setfiletype drawing
	endif
<     より多くの例については$VIMRUNTIME/scripts.vimを参照。
      このファイルを "scripts.vim" としてユーザーランタイムディレクトリに保存
      する。UNIXを例に挙げる: >
	:w ~/.vim/scripts.vim
<
   3. これだけで検出は正しく動作し、Vimを再起動する必要は無い。

   新しく作成したscripts.vimはデフォルトのファイル形式チェックの前に読み込まれ
   るので、$VIMRUNTIME/scripts.vimに書かれたデフォルトの判定規則を上書きするこ
   とができる。

						*remove-filetype*
ファイル形式が誤って検出されたならば、(上を参考に)それを補正するfiletype.vimか
scripts.vimをインストールする。'filetype' に存在しない形式の名前を設定すれば、
それ以降の検出スクリプトで別の値が設定されてしまうのを避けることができる: >
	:set filetype=ignored

複数人で使用する環境を設定していて、個々のユーザーにはファイル形式を追加/削除
させたくないならば、ランタイムディレクトリに置いて全ユーザーが共有するように
filetype.vimとscripts.vimを書く必要がある。そのスクリプトを置くディレクトリに
は 'runtimepath' の示すうちのどれか1つを選択する。'runtimepath' の中に設定を置
きたいディレクトリが見あたらなければ、|system-vimrc|内で正しく追加する必要があ
る。既に設定されているデフォルトのディレクトリを変更しないように注意。


						*autocmd-osfiletypes*
NOTE: RISC OS サポートが削除されたため、このコードは現在無効化されている。将来
これは 'filetype' オプションを使用することになるだろう。

ファイルと共に「形式」を記録できるオペレーティングシステム(OS)では、ファイルが
ある「形式」だった時にだけ実行される自動コマンドを設定することができる。

実際の「形式」チェックはVimをどのプラットフォームで使用しているかに依存する;
詳細は使用しているシステムの解説書を参照のこと。

OSによる「形式」を利用するには自動実行コマンドの検出パターンの場所に、次の例に
示すように折カッコで囲んだ検出させたい「形式」のリストを書く: >

	:au BufRead *.html,<&faf;HTML>  runtime! syntax/html.vim

これは以下に適合する:

- ファイル名が ".html" で終了するあらゆるファイル
- 「形式」が "&faf" か "HTML" である全てのファイル。ただしここでいう「形式」と
  はVimのバージョン(稼動しているOS)によって定義される。未知の形式は適合しない
  とみなされる。

「形式」とパターンを同時に指定することもできる (そのような場合には、両方共マッ
チする必要がある): >

	:au BufRead <&fff>diff*

これは「形式」が "&fff" で名前が "diff" で始まるファイルに適合する。


							*plugin-details*
"plugin" ディレクトリは 'runtimepath' オプションに示されているならば、どのディ
レクトリに置いても良い。そこに示された全てのディレクトリにあるプラグインが検索
され読み込まれる。例えば、次のコマンドを実行すると: >

	set runtimepath

次の内容が出力される:

	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim82 ~

この時Vimは以下に示すディレクトリとそれ以下にある全てのプラグインを読み込む:

	/etc/vim/plugin/ ~
	~/.vim/plugin/ ~
	/usr/local/share/vim/vim82/plugin/ ~

最後の1つは$VIMRUNTIMEが展開されたものであることに注意。

Note: プラグインマネージャーや |packages| を使っている場合、たくさんのディレク
トリが 'runtimepath' に追加される。これらのプラグインはそれぞれに自分用のディ
レクトリが必要であり、~/.vim/plugin に直接置いてはいけない。

プラグインが読み込まれていないらしい場合はどうすれば良いのか? Vim起動時に|-V|
引数を使用すれば何が起こっているか知ることができる: >

	vim -V2

多くのメッセージが表示されるが、プラグインの読み込みの前には特定の記述がなされ
る。それは次のように始まる:

	Searching for "plugin/**/*.vim" in ~

これを見ればVimがプラグインスクリプトをどこから探しているのかがわかる。

==============================================================================
2. ファイル形式別プラグイン				*filetype-plugins*

ファイル形式プラグインが有効になっていれば|:filetype-plugin-on|、プラグイン読
込時にオプションが設定されキーマップが定義される。それらは全てバッファローカル
で、他のファイルに対しては決して作用しない。

ファイル形式により定義されるキーマップが自分で定義したキーマップの邪魔になるこ
ともあり得る。幾つかこれを回避する方法がある:
1. "maplocalleader" にキーマップの先頭に使用するキーシーケンスを設定する。例: >
	:let maplocalleader = ","
<  デフォルトのバックスラッシュ(\ 記号)に替えてコンマが全てのマップの始まりの
   キーになる。|<LocalLeader>|も参照。

2. 独自のマップを定義する。例: >
	:map ,p <Plug>MailQuote
<  どのような機能が提供され、それにどのような文字列がキーマップされているのか、
   プラグインファイルの説明をチェックする必要がある。
   独自のキーマップはプラグインが読み込まれる (つまりその形式のファイルが読み
   込まれる) 前に定義する必要がある。そうすればプラグインはデフォルトキーマッ
   ピングのインストールを行わない。
					*no_mail_maps* *g:no_mail_maps*
3. 特定のファイル形式についてキーマップを無効化するならば、そのファイル形式名
   を含むある変数を設定する。ファイル形式 "mail" のキーマップを無効にするには
   次のようにする: >
	:let no_mail_maps = 1
<					*no_plugin_maps* *g:no_plugin_maps*
4. ファイル形式による全てのキーマップを無効化するには次の変数を設定する: >
	:let no_plugin_maps = 1
<

							*ftplugin-overrule*
グローバルな($VIMRUNTIMEにある、システムが提供する)ファイル形式プラグインが
キッチリ望むように動作しない場合には、これを変更する方法が3通りある:

1. 設定を追加する。
   新しいファイル形式プラグインを作り、'runtimepath' の始めのほうに置く。一例
   として、UNIXではこのファイルを利用できる: >
	vim ~/.vim/ftplugin/fortran.vim
<   追加したい設定やキーマップをこのファイルに記述する。グローバルプラグインは
   これの後に読み込まれるので、ここで行った設定は上書される可能性がある。その
   ような場合には以下の2つの方法のどちらかを利用する。

2. プラグインのコピーを作成し、そちらを変更する。
   'runtimepath' の始めのほうにそのプラグインのコピーを置く。一例として、UNIX
   ではこのように行う: >
	cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
<   そうすればコピーしたファイルを好きなように変更できる。これは変数
   b:did_ftpluginが設定されていれば、グローバルプラグインは読み込まれない仕組
   みになっていることによる。
   この方法には、配布されるプラグインが改良された際に、再びコピーし同じように
   変更しなければならない、という短所がある。

3. グローバルプラグインの読み込み後に設定を上書きする。
   'runtimepath' の最後に、新しいファイル形式プラグインを作成する。一例として、
   UNIXではこのファイルを利用できる: >
	vim ~/.vim/after/ftplugin/fortran.vim
<   このファイルの中では、変更したい設定だけを変更できる。

==============================================================================
3.  標準で付属する形式別プラグインの解説		*ftplugin-docs*


					*plugin_exec* *g:plugin_exec*
外部コマンドの実行を有効にする。これは歴史的に、例えば perl filetype プラグイ
ン (および他のいくつかのプラグイン) の検索パスを設定するために行われていた。セ
キュリティ上の理由から、デフォルトでは無効になっている: >
	:let g:plugin_exec = 1
特定のファイルタイプに対してのみ有効にすることも可能である: >
	:let g:<filetype>_exec = 1
したがって、これを Ruby に対してのみ有効にするには、次の変数を設定する: >
	:let g:ruby_exec = 1

グローバル `plugin_exec` と `<filetype>_exec` 固有の変数の両方が設定されている
場合は、ファイルタイプ固有の変数が優先される必要がある。


ASCIIDOC						*ft-asciidoc-plugin*

|folding| を有効にするには、これを使用する: >
	let g:asciidoc_folding = 1

折り畳まれたヘッダーのネストを無効にするには、これを使用する: >
	let g:asciidoc_foldnested = 0

タイトルの下のすべてを折りたたむことを無効にするには、これを使用する: >
	let asciidoc_fold_under_title = 0


ARDUINO							*ft-arduino-plugin*

デフォルトでは、Arduino IDE のデフォルト設定に従って、以下のオプションが設定さ
れている: >

	setlocal expandtab tabstop=2 softtabstop=2 shiftwidth=2

この動作を無効にするには、vimrc で以下の変数を設定する: >

	let g:arduino_recommended_style = 0


AWK							*ft-awk-plugin*

@include のような、GNU Awk 固有の機能のサポートは、以下の設定で有効にできる: >
	:let g:awk_is_gawk = 1


CHANGELOG						*ft-changelog-plugin*

{訳注: エントリ=日付ごとの区切り アイテム=日付内の項目}

チェンジログファイルを簡単に扱うことを可能にする。いくつかの便利なコマンドや
マッピング、変数がある。

オプション:
'comments'		フォーマットを崩さないように空に設定される。
'textwidth'		標準的な値である78に設定される。
'formatoptions'		テキストを折り返すために 't' が加えられる。

コマンド:
NewChangelogEntry	適切にアイテムを追加する(以下参照)。

ローカルマッピング:
<Leader>o		上と同様に適切にアイテムを追加する(以下参照)。

グローバルマッピング:
			NOTE: グローバルマッピングはあらかじめ
			ftplugin/changelog.vim を実行することで有効になる。
			例えば >
				runtime ftplugin/changelog.vim
<			と |.vimrc| に書くようにして。
			{訳注: この例だと間違えてこのまま書いちゃいそう。}
<Leader>o		カレントディレクトリに "ChangeLog" というファイルがあ
			れば開き、既に開かれていればバッファを切替える。そして
			上記のローカルマッピング<Leader>oと同じように働く。

変数:
g:changelog_timeformat	非推奨。g:changelog_dateformatを使うこと。
g:changelog_dateformat	エントリに入れる日付(と時間)の書式。
			使えるフォーマットは |strftime()| と同じ。
			デフォルトでは標準的に使われている "%Y-%m-%d" が設定
			されている。
g:changelog_username	ユーザーの名前とメールアドレス。
			デフォルトは環境変数とシステムファイルから推定され
			る。まずカレントユーザーについての情報を得るために
			/etc/passwd を探す。そこの最初の区切りにユーザーの実
			名があることを期待している。次に環境変数の$NAMEを
			チェックする。最後にアドレスを得るために`whoami`と
			`hostname`を実行する。最終的に次のような値を決定す
			る。 >
				Full Name <user@host>
<
g:changelog_new_date_format
			エントリを作成するときの書式。
			次の特別な文字が使える:
				%%	一つの '%' が入る
				%d	上記で定義した日付
				%u	上記で定義したユーザーの名前
				%p	b:changelog_entry_prefix の結果
				%c	作成後のカーソルの位置
			デフォルトは "%d  %u\n\n\t* %p%c\n\n"。これは次のよう
			になる ( | はカーソルの位置を示している。しかし、行頭
			の | は行の始まりを表す) >
				|2003-01-14  Full Name  <user@host>
				|
				|        * prefix|
<
g:changelog_new_entry_format
			アイテムを作成するときの書式。
			次の特別な文字が使える:
				%p	b:changelog_entry_prefix の結果
				%c	作成後のカーソルの位置
			デフォルトは "\t*\c"。これは次のようになる >
				|        * prefix|
<
g:changelog_date_entry_search
			日付エントリを探すための検索パターン。
			g:changelog_new_date_formatと同じ特別な文字が使え
			る。デフォルトは '^/\s*%d\_s*%u' で、次のような行 >
				|2003-01-14  Full Name  <user@host>
<			を見つける。

g:changelog_date_end_entry_search
			日付エントリの終端を探すための検索パターン。
			g:changelog_new_date_formatにおけるトークンと同じもの
			が使用できる。デフォルトは '^\s*$' で、空白文字のみを
			含む行または完全な空行を検索する。

b:changelog_name					*b:changelog_name*
			チェンジログファイルの名前。
			既定値は 'ChangeLog'。

b:changelog_path
			カレントバッファに使うチェンジログのパス。
			既定では空文字列で、カレントバッファと同じディレクトリ
			から |b:changelog_name| という名前のファイルが検索され
			る。それが見つからない場合は、カレントバッファの親
			ディレクトリを検索する。ファイルが見つかるか、それ以上
			上がれなくなるまで、再帰的にこれが繰り返される。

b:changelog_entry_prefix
			新しいエントリのプリフィックスを生成するための関数の名
			前を指定する。関数は引数を取らず、プリフィックスの文字
			列を返す。関数は空文字を返しても構わない。
			デフォルトでは ChangeLog のパスとカレントバッファのパ
			スの間の最短パスが使用される。
			将来的には他の変数コンテキスト (例えば g:) でも指定で
			きるようになる予定である。

チェンジログエントリは適切な位置に挿入される。現在の日付とユーザーを得た後
に、その日付とユーザーのエントリをファイルから探し、見つかればその下にアイテ
ムを加える。なければ新しいエントリとアイテムをファイルの先頭に加える。


FORTRAN							*ft-fortran-plugin*

オプション:
'expandtab'	.vimrc で fortran_have_tabs が指定されなければ、Fortran 標準
		に従ってタブ文字を避けるために有効にする。
'textwidth'	Fortran 標準に従って固定形式のソースでは 80 に、自由形式のソー
		スでは 132 に設定される。fortran_extended_line_length 変数を設
		定すると、固定形式のソースでは幅が 132 に増加する。
'formatoptions' コードとコメントを分けて、長い行を保持するように設定される。
		これにより |gq| でコメントを整形できる。
fortran_have_tabs についての議論とソース形式の判定法については
|ft-fortran-syntax| を参照。


FREEBASIC						*ft-freebasic-plugin*

このプラグインは、FreeBASIC 方言である "fb", "qb", "fblite", "deprecated" の4
つをそれぞれ別の言語として扱うことを目的としている。

方言は、g:freebasic_forcelang、編集中のファイルの #lang ディレクティブ、または
$lang メタコマンドで見つかった最初の名前、または最終的に g:freebasic_lang に設
定される。これらのグローバル変数は、概念的には fbc オプションの -forcelang お
よび -lang に対応している。方言が明示的に指定されていない場合は、"fb" が使用さ
れる。

例えば、方言のデフォルトを "fblite" に設定するが、#lang ディレクティブの上書き
を許可するには、次のコマンドを使用する: >

	let g:freebasic_lang = "fblite"


GDSCRIPT						*ft-gdscript-plugin*

デフォルトでは、Godot の公式ドキュメントに基づいて、以下のオプションが設定され
ている: >

	setlocal noexpandtab softtabstop=0 shiftwidth=0

この動作を無効にするには、vimrc で以下の変数を設定する: >

	let g:gdscript_recommended_style = 0


GIT COMMIT						*ft-gitcommit-plugin*

現在のコミットの差分をプレビューウィンドウに表示する :DiffGitCached というコマ
ンドが提供されている。このコマンドを実行すると、その引数をつけて "git diff
--cached" が実行される。

GIT REBASE						*ft-gitrebase-plugin*

gitrebase ファイルタイプは、対話型の `git rebase` を支援するために、以下のバッ
ファローカルなコマンドを定義する: >

	:Drop   " このコミットを破棄する
	:Edit   " このコミットの編集をやめる
	:Fixup  " 前のコミットにまとめる (ただし、メッセージは破棄する)
	:Pick   " このコミットを選択する (カーソルはオン)
	:Reword " このコミットを選択するが、コミットメッセージを変更する
	:Squash " このコミットを前のコミットにまとめる

さらに、以下のコマンドを使用して異なる選択肢を切り替えることができる: >

	:Cycle  " 前のコマンドを切り替える
<
`:Cycle` コマンドは、CTRL-A キーと CTRL-X キーにもマップされる。
詳細については `git-rebase --help` を参照。

GLEAM						*ft-gleam-plugin*

デフォルトでは、推奨される gleam スタイルに以下のオプションが設定されている: >

	setlocal expandtab shiftwidth=2 softtabstop=2

この動作を無効にするには、vimrc で以下の変数を設定する: >

	let g:gleam_recommended_style = 0

GO							*ft-go-plugin*

デフォルトでは、Golang の公式ドキュメントに基づいて、以下のオプションが設定さ
れている: >

	setlocal noexpandtab softtabstop=0 shiftwidth=0

この動作を無効にするには、vimrc で以下の変数を設定する: >

	let g:go_recommended_style = 0


GPROF							*ft-gprof-plugin*

gprof ファイルタイププラグインは gprof のフラットプロファイルもしくはコールグ
ラフの関数エントリからコールグラフの関数の詳細へジャンプする <C-]> マッピング
を定義する。

このマッピングを無効にするには: >
	let g:no_gprof_maps = 1


HARE							*ft-hare*

このプラグインのテキストはかなり長いため、別ファイル |ft_hare.txt| に配置され
ている: |ft_hare.txt|。

HTML							*ft-html-plugin*

タグの折り畳みにはいくつかの難しさがある。多くの要素、例えば `blockquote` は常
に開始タグと終了タグで区切られる。一方、一部の要素、例えば `p` の終了タグは、
特定のコンテキストでは省略可能である。一方、空要素、例えば `hr` には終了タグが
ない。省略可能な終了タグをサポートするためのルールはアドホックで複雑だが [0]、
スコープ内の要素に適用される。構文的に整形式性があると仮定すると、終了タグはス
コープ内 [1] およびファイルの先頭付近で発見可能な最も近い開始タグと関連付ける
ことができる。一方、不均衡なタグやインラインタグはすべて無視できる。構文ハイラ
イトが有効になっている場合、|fold-expr| メソッドを用いたタグの折り畳みは以下で
有効にできる: >
	let g:html_expr_folding = 1
<
デフォルトでは、|TextChanged| または |InsertLeave| イベントが発生するたびに、
タグの折り畳みが最初からやり直される。特に大きなファイルの場合、このような頻度
は望ましくない場合がある。この再計算は以下で無効にできる: >
	let g:html_expr_folding_without_recomputation = 1
        doautocmd FileType
<
再計算を強制するには、以下のようにする: >
	unlet! b:foldsmap
	normal zx
<
[0] https://html.spec.whatwg.org/multipage/syntax.html#optional-tags
[1] https://en.wikipedia.org/wiki/Dangling_else

IDRIS2							*ft-idris2-plugin*

デフォルトでは、以下のオプションが設定されている: >

	setlocal shiftwidth=2 tabstop=2 expandtab
	setlocal comments=s1:{-,mb:-,ex:-},:\|\|\|,:--
	setlocal commentstring=--\ %s
	setlocal wildignore+=*.ibc

インデントにスペースではなくタブを使用するには、vimrc に以下の変数を設定する: >

	let g:idris2#allow_tabchar = 1

JAVA							*ft-java-plugin*

変数 "g:ftplugin_java_source_path" が定義され、その値が拡張子 ".jar" または
".zip" のファイル名である場合の例: >
	let g:ftplugin_java_source_path = '/path/to/src.jar'
	let g:ftplugin_java_source_path = '/path/to/src.zip'
<
そして、|zip| プラグインがすでに読み込まれている場合は、|gf| コマンドを使用し
てアーカイブを開き、|n| コマンドを使用して選択したタイプを検索し、<Return> キー
を使用してリストされたファイルを読み込むことができる。

Note Zip プラグインで読み込まれたバッファ内で "gf" コマンドを使用した場合の効
果は、Zip プラグインのバージョンによって異なることに注意。Jar タイプのアーカイ
ブをサポートしていない Zip プラグインのバージョンの場合は、対象の各 Jar アーカ
イブに対して ".zip" 拡張子のシンボリックリンクを作成し、今後はそのようなファイ
ルを変数に割り当てることを検討すること。

それ以外の場合、定義済み変数 "g:ftplugin_java_source_path" に対して、変数の値
を先頭に追加することで、'path' オプションのローカル値がさらに変更される。例: >
	let g:ftplugin_java_source_path = $JDK_SRC_PATH
	let &l:path = g:ftplugin_java_source_path .. ',' .. &l:path
<
そして、"gf" コマンドを完全修飾型の上で使用することで、"path" からファイルを探
し、それを読み込もうと試みることができる。

変数に新しい値を割り当てた後は、必ず、Java ファイルが読み込まれているバッファ
から |FileType| イベントを手動でトリガーすること: >
	doautocmd FileType
<
Markdown ドキュメントのコメントには、見た目上の理由から、コメントマーク (`///`)
の後に垂直の先頭の空白が続くことがある。ただし、Markdown では、コードブロック
などを示すため、先頭の空白の水平の連続が重要になる。便利のよいように、|gq| オ
ペレータに 'formatexpr' 機能が提供されている。"g:java_ignore_javadoc" も
"g:java_ignore_markdown" も定義されていない限り、Markdown コメントの再フォー
マットは、以下のようにしてオンデマンドで有効にできる: >
	setlocal formatexpr=g:javaformat#RemoveCommonMarkdownWhitespace()
<
または、Vim バージョンが `7.4.265` 未満の場合は、以下のようにする: >
	setlocal formatexpr=javaformat#RemoveCommonMarkdownWhitespace()
<
この関数は、行の範囲を受け入れ、共通の垂直方向の先頭の空白を削除し、範囲内の行
を書き換える。作成者のレイアウトスタイルとコメントの内容に応じて、再フォーマッ
トのために選択する行は、コメント全体からコメントの一部までさまざまである。

"g:java_ignore_markdown" または "g:java_ignore_javadoc" を削除した後で毎回
Markdown コメントの認識を有効にするには、`8.2.1397` 以降のバージョンの Vim で
は "javaformat.vim" を手動で再読込みすることを忘れないこと: >
	runtime autoload/javaformat.vim
<
JSON-FORMAT						*ft-json-plugin*

JSON ファイルタイプは、JSON のフォーマッティング (|gq| を使用) に 'formatexpr'
および "json.FormatExpr()" 関数を使用するように拡張できる。

次の行を $HOME/.vim/ftplugin/json.vim に追加する: >

	vim9script
	import autoload 'dist/json.vim'
	setl formatexpr=json.FormatExpr()

LUA					*ft-lua-plugin* *g:lua_folding*

|fold-expr| を使用して Lua 関数の折り畳みを有効にするには: >

	let g:lua_folding = 1
<					*g:lua_version* *g:lua_subversion*
Lua ファイルタイプの 'includeexpr' と |ft-lua-syntax| のハイライトは、グローバ
ル変数 "g:lua_version" と "g:lua_subversion" を使用して、使用する Lua のバー
ジョンを決定する (デフォルトは 5.3)。

例えば、Lua 5.1 を使用するには変数を以下のように設定する: >

	let g:lua_version = 5
	let g:lua_subversion = 1
<
MAIL							*ft-mail-plugin*

オプション:
'modeline'	トロイの木馬の危険を避けるのと、「件名」に含まれる "Vim:" がエ
		ラーメッセージの原因となる可能性を排除するために、モード行はオ
		フになる。
'textwidth'	72に設定する。e-mailでは良く推奨される値。
'formatoptions' テキストを折返し、新しい行ではコメントリーダーを繰り返すように
		設定。引用記号の ">" が繰り返される。
		これにより|gq|で引用文を整形できる。

ローカルキーマップ:
<LocalLeader>q   or   \MailQuote
	ビジュアルモードでは選択されたテキストを、ノーマルモードではカーソルの
	位置からファイル末端までのテキストを引用する。これは全ての行に "> " が
	挿入されることを意味している。

MAN				*ft-man-plugin* *:Man* *:ManReload* *man.vim*

このプラグインはマニュアルページを洗練された方法で表示する。ユーザーマニュアル
の詳細な情報は |find-manpage| も参照のこと。

マニュアルページが読み込まれる前に |:Man| を利用するには、起動 |vimrc| ファイ
ルでこのスクリプトを読み込む必要がある: >

	runtime ftplugin/man.vim

オプション:
'iskeyword'	マニュアルページの名前の上で CTRL-] の利用をサポートするように
		するために文字 '.' が追加される。

コマンド:
Man {name}	{name} についてのマニュアルページを表示する。
Man {number} {name}
		{number} セクションの {name} についてのマニュアルページを表示
		する。
ManReload	|:Man| の引数補完に使われる使用可能なマニュアルページのキャッ
		シュを再読み込みする。

グローバルキーマップ:
<Leader>K	カーソル下の単語についてのマニュアルページを表示する。
<Plug>ManPreGetPage
		同上、マッピングを使うことを可能にする: >
			nmap <F1> <Plug>ManPreGetPage

ローカルキーマップ:
<Plug>ManBS
<LocalLeader>h	バッファからバックスペース <BS> 文字をクリアする。
CTRL-]		カーソルの下の単語についてのマニュアルページへ移動する。
CTRL-T		直前のマニュアルページへ戻る。

マッピングは以下で無効にできる: >
	let g:no_man_maps = 1

水平の代わりに垂直分割を使用するには: >
	let g:ft_man_open_mode = 'vert'
新しいタブを使うには: >
	let g:ft_man_open_mode = 'tab'

折り畳み |folding| を有効にするにはこの変数を使う: >
	let g:ft_man_folding_enable = 1
もしデフォルトの折り畳みが好みではないのなら、代わりに |autocommand| を使って
望んだ折り畳みスタイルを追加できる。例: >
	autocmd FileType man setlocal foldmethod=indent foldenable

:Man {number} {name} が man {number} {name} のように振る舞い、ページが見つから
ない場合に man {name} を実行させたくなければ、これを使用する: >
	let g:ft_man_no_sect_fallback = 1
<
						*g:ft_man_implementation*
:Man コマンドの補完はシステムがどの man の実装を持っているかを推測しようとす
る。推測が間違っている場合は、g:ft_man_implementation を次のいずれかの値に設定
できる:
	'man-db'	https://man-db.nongnu.org/
	''		不明。マニュアルページの代わりにシェルコマンドの補完に
			フォールバックする。

'keywordprg' を設定して、|K| コマンドを Vim ウィンドウのマニュアルページにもで
きる: >
	set keywordprg=:Man


MANPAGER						*manpager.vim*

|:Man| コマンドを使うと、Vim をマンページにできる(その構文はマンページをハイラ
イト表示し、CTRL-] でヒットしたリンク先のマンページをたどる)。

bash, zsh, ksh もしくは dash の場合、設定ファイル (.bashrc, .zshrc, ...) に以
下の設定を追加する。

	export MANPAGER="vim +MANPAGER --not-a-term -"

(t)csh の場合、設定ファイルに以下の設定を追加する。

	setenv MANPAGER "vim +MANPAGER --not-a-term -"

fish の場合、設定ファイルに以下の設定を追加する。

	set -x MANPAGER "vim +MANPAGER --not-a-term -"


MARKDOWN						*ft-markdown-plugin*

折り畳みを有効にするには、次のようにする: >
	let g:markdown_folding = 1

'expandtab' はデフォルトで設定される。それを望まない場合は、次のようにする: >
	let g:markdown_recommended_style = 0


ORG							*ft-org-plugin*

折り畳みを有効にするには、これを使う: >
	let g:org_folding = 1
<

PDF							*ft-pdf-plugin*

PDF ファイル内をジャンプするため、タグスタックをシミュレートする <C-]> と<C-T>
という2つのマップが提供されている。次のものがタグとして扱われる:

- "startxref" の後から xref テーブルまでのバイトオフセット
- トレイラー内の /Prev キーから前の xref テーブルへのバイトオフセット
- xref テーブル内の "0123456789 00000 n" という形式の行
- PDF 内の任意の位置における "1 0 R" のようなオブジェクト参照

これらのマップは次のコマンドで無効化できる >
	:let g:no_pdf_maps = 1

PLSQL							*ft-plsql-plugin*

PL/SQL ファイルタイプでシンタックスの折り畳みを有効にするには、以下の変数を設
定する: >

	:let g:plsql_fold = 1
<

PYTHON						*ft-python-plugin* *PEP8*

デフォルトでは、PEP8 に従って以下のオプションが設定されている: >

	setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8

この動作を無効にするには、あなたのvimrcに次の変数を設定する: >

	let g:python_recommended_style = 0


QF QUICKFIX					    *qf.vim* *ft-qf-plugin*

"qf" ファイルタイプは quickfix ウィンドウに使用される。|quickfix-window| を参
照。

quickfix ファイルタイププラグインは quickfix リストを生成したコマンドを
|status-line| に表示するための設定を含む。この設定を無効にするには、以下のよう
に設定する: >
       :let g:qf_disable_statusline = 1


R MARKDOWN						*ft-rmd-plugin*

デフォルトでは、ftplugin/html.vimは読み込まれない。読み込みたい場合は、以下を
あなたの |vimrc| に追加する: >
	let rmd_include_html = 1

'formatexpr' オプションは、Rコード用とMarkdownコード用の異なる値で動的に設定さ
れる。'formatexpr' が設定されていない方が良い場合は、以下をあなたの |vimrc| に
追加する: >
	let rmd_dynamic_comments = 0


R RESTRUCTURED TEXT					*ft-rrst-plugin*

'formatexpr' オプションは、Rコード用とreStructuredText用の異なる値で動的に設定
される。'formatexpr' が設定されていない方が良い場合は、以下をあなたの |vimrc|
に追加する: >
	let rrst_dynamic_comments = 0


RESTRUCTUREDTEXT					*ft-rst-plugin*

以下のフォーマット設定がオプションで利用可能である: >
	setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8

この機能を有効にするには、あなたのvimrcに次の変数を設定する: >
	let g:rst_style = 1


RNOWEB							*ft-rnoweb-plugin*

'formatexpr' オプションは、R コードと LaTeX コードに対して異なる値で動的に設定
される。'formatexpr' を設定しないことを希望する場合は、|vimrc| に以下を追加す
る: >
	let rnw_dynamic_comments = 0


RPM SPEC						*ft-spec-plugin*

このプラグインに関する説明は非常に多いので、別のファイル |pi_spec.txt| に記述
してある。


RUST							*ft-rust*

このプラグインに関する説明は非常に多いので、別のファイル |ft_rust.txt| に記述
してある。


SQL							*ft-sql*

このプラグインについての解説は長くなるので、別のファイルに分割してある:
|ft_sql.txt|


TEX						*ft-tex-plugin* *g:tex_flavor*

*.tex ファイルの最初の行が次のような形なら >
	%&<format>
ファイルタイプは次のどれかになる: plaintex (プレーン TeX), context (ConTeXt),
tex (LaTeX)。そうでなければ context か tex かを決定するためにファイル内から
キーワードを検索する。もしキーワードが見つからなければ既定値として plaintex に
なる。この既定値は、変数 g:tex_flavor を定義すれば変更することができる。次のど
れかのようにする: >
	let g:tex_flavor = "plain"
	let g:tex_flavor = "context"
	let g:tex_flavor = "latex"
現在のところこれ以外のフォーマットは識別されない。

TYPST							*ft-typst-plugin*

							*g:typst_conceal*
|TRUE| の場合、Typst ファイルタイププラグインは 'conceallevel' オプションを 2
に設定する。

							*g:typst_folding*
|TRUE| の場合、Typst ファイルタイププラグインは見出しを折り畳む。(デフォルト:
|FALSE|)

有効にするには: >
	let g:typst_folding = 1
<
							*g:typst_foldnested*
|TRUE| の場合、Typst ファイルタイププラグインはネストされた見出しを親の下に折
り畳む。(デフォルト: |TRUE|)

無効にするには: >
	let g:typst_foldnested = 0
<
VIM							*ft-vim-plugin*

Vim ファイルタイププラグインは以下のマッピングを定義する:

    [[		前の関数の先頭に移動する
    ]]		次の関数の先頭に移動する
    ][		前の関数の末尾に移動する
    []		次の関数の末尾に移動する
    ]"		次の (旧来の) コメントに移動する
    ["		前の (旧来の) コメントに移動する
    gf		カーソル下のファイルを編集する
    CTRL-W gf	カーソル下のファイルを新しいタブページで編集する
    CTRL-W f	カーソル下のファイルを新しいウィンドウで編集する


このマッピングは以下のようにして無効化することができる: >
	let g:no_vim_maps = 1


YAML							*ft-yaml-plugin*
デフォルトでは、YAML ファイルタイププラグインは以下のオプションを有効にする: >
	setlocal shiftwidth=2 softtabstop=2

これを無効にするには、以下の変数を設定する: >
	let g:yaml_recommended_style = 0

ZIG							*ft-zig-plugin*

						*g:zig_recommended_style*
デフォルトでは、Zig の推奨スタイルに従って、以下のインデントオプションが設定さ
れている (https://ziglang.org/documentation/master/): >

	setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
<
この動作を無効にするには、|g:zig_recommended_style| を 0 に設定する: >

	let g:zig_recommended_style = 0
<
							*g:zig_std_dir*
Zig 標準ライブラリへのパス。Zig |ftplugin| は |g:zig_std_dir| を読み取り、それ
を Zig ファイルの 'path' に追加する。Zig 標準ライブラリが配置されている場所は、
システムとインストール方法によって異なる。

`zig env` を使用すると |g:zig_std_dir| を自動的に設定できる: >

	let g:zig_std_dir = json_decode(system('zig env'))['std_dir']
<
例えば、これを FileType |:autocmd| またはユーザー |ftplugin| に配置して、Zig
ファイルが開かれたときにのみ読み込まれるようにできる。


ZIMBU							*ft-zimbu-plugin*

Zimbu ファイルタイププラグインは、[[ および ]] で関数の先頭および末尾に移動す
るためのマッピングを定義する。

このマッピングは以下のようにして無効化することができる: >
	let g:no_zimbu_maps = 1
<


 vim:tw=78:ts=8:noet:ft=help:norl:
