vim-jp / vimdoc-ja / filetype

filetype - Vim日本語ドキュメント

メインヘルプファイルに戻る English | 日本語 | 編集
filetype.txt  For Vim バージョン 9.1.  Last change: 2024 Dec 04


                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はファイルがどのよう
な種類であるかを推測する。これは常に動作するわけではない。ある拡張子に対してど
のファイル形式を使うか明示的に指定するのに、幾つかのグローバル変数を使うことが
できる:

        ファイル名      変数
        *.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
        *.i             g:filetype_i            ft-progress-syntax
        *.inc           g:filetype_inc
        *.lsl           g:filetype_lsl
        *.m             g:filetype_m            ft-mathematica-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" が実行される。


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

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

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

        let g:lua_folding = 1

MAIL                                                    ft-mail-plugin

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

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

MAN                                     ft-man-plugin :Man man.vim

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

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

        runtime ftplugin/man.vim

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

コマンド:
Man {name}      {name} についてのマニュアルページを表示する。
Man {number} {name}
                {number} セクションの {name} についてのマニュアルページを表示
                する。

グローバルキーマップ:
<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

'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


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 ファイルタイププラグインは、[[ および ]] で関数の先頭および末尾に移動する
ためのマッピングを定義する。コメントの周辺には ]" および [" で移動する。

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


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: