ファイルタイプ

Nvim の :help ページは、生成されたもので、ソースtree-sitter-vimdoc パーサーを使って処理したものです。


ファイルタイプ file-type
autocmd.txt も参照してください。

1. ファイルタイプ filetypes file-types

Vim は編集されるファイルの種類を検出できます。これはファイル名をチェックし、時にはファイルの内容を特定のテキストで検査することで行われます。
:filetype :filet ファイルタイプ検出を有効にするには、vimrc で次のコマンドを使用します。
:filetype on
新しいファイルまたは既存のファイルが編集されるたびに、Vim はファイルの種類を認識し、'filetype' オプションを設定しようとします。これにより FileType イベントがトリガーされ、構文強調表示の設定、オプションの設定などに使用できます。
詳細: ":filetype on" コマンドは、次のファイルをロードします。$VIMRUNTIME/filetype.lua $VIMRUNTIME/filetype.vim filetype.lua は、すべての BufNewFile および BufRead イベントで発火する自動コマンドを作成します。これは、ファイルの拡張子または名前に基づいてファイルタイプを検出しようとします。
filetype.vim は、BufNewFile および BufRead イベントの自動コマンドを定義する Vim スクリプトです。filetype.lua とは対照的に、このファイルはファイルタイプパターンごとに個別の BufNewFile および BufRead イベントを作成します。
ファイルタイプが名前で見つからない場合、$VIMRUNTIME/scripts.vim ファイルを使用して、ファイルの内容から検出します。GUI が実行中またはすぐに開始される場合は、menu.vim スクリプトも読み込まれます。
独自のファイルタイプを追加するには、以下の new-filetype を参照してください。ファイルタイプのヘルプを検索するには、"ft-" を前につけ、オプションで "-syntax"、"-indent"、または "-plugin" を追加します。例:
:help ft-vim-indent
:help ft-vim-syntax
:help ft-man-plugin
ファイルタイプが自動的に検出されない場合、または間違ったタイプが見つかった場合は、'filetype' オプションを手動で設定するか、ファイルにモデルラインを追加できます。例として、IDL ファイルの場合は次のコマンドを使用します。
:set filetype=idl
または、次の モデルライン をファイルに追加します。
/* 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" ファイルをロードします。結果として、ファイルが編集されると、そのインデントファイルがロードされます(検出されたファイルタイプに対応するものがある場合)。indent-expression
:filetype-indent-off
次のコマンドで再び無効にできます。
:filetype indent off
この場合、ファイルタイプ検出はオフになりません。ただし、ファイルタイプ検出をオフにすると、インデントファイルもロードされなくなります。これは実際には、'runtimepath' 内の "indoff.vim" ファイルをロードします。これにより、開くファイルの自動インデントが無効になります。すでに開いているファイルでは機能し続けます。開いているファイルのインデントを無効にするには、'autoindent''cindent''smartindent'、および/または 'indentexpr' をリセットします。
:filetype-off
ファイルタイプ検出を無効にするには、次のコマンドを使用します。
:filetype off
これにより、"plugin" と "indent" のフラグは保持されますが、ファイルタイプが検出されないため、次の ":filetype on" まで機能しません。
コマンド 検出 プラグイン インデント
:filetype on オン 変更なし 変更なし
現在のステータスを表示するには、次のように入力します。
:filetype
出力は次のようになります。
filetype detection:ON  plugin:ON  indent:OFF
ファイルタイプは構文強調表示にも使用されます。":syntax on" コマンドを使用すると、ファイルタイプ検出もインストールされます。":syntax on" の後に ":filetype on" を実行する必要はありません。
ファイルタイプの 1 つを無効にするには、ファイルタイプファイルに 1 行を追加します。詳細については、remove-filetype を参照してください。
filetype-detect
ファイルタイプを再検出するには
:filetype detect
空のファイルから開始し、ファイルタイプを検出できるようにテキストを入力した場合に使用します。たとえば、シェルスクリプトに「#!/bin/csh」と入力した場合などです。ファイルタイプ検出がオフの場合、"on" 引数が使用されたように、最初に有効になります。
filetype-overrule
同じ拡張子が複数のファイルタイプで使用されている場合、Vim はどの種類のファイルであるかを推測しようとします。これは必ずしも機能しません。いくつかのグローバル変数を使用して、特定の拡張子で使用されるファイルタイプをオーバーライドできます。
ファイル名 変数
*.asa g:filetype_asa ft-aspperl-syntax ft-aspvbs-syntax
いくつかのファイルタイプでは、ファイルタイプが検出できなかった場合にのみグローバル変数が使用されます。 *.r g:filetype_r ft-rexx-syntax
filetype-ignore
特定のファイルが検査されないようにするために、g:ft_ignore_pat 変数が使用されます。デフォルト値は次のように設定されています。
:let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
これは、圧縮ファイルの内容が検査されないことを意味します。
new-filetype
使用したいファイルタイプがまだ検出されていない場合は、いくつかの方法で追加できます。推奨される方法は、vim.filetype.add() を使用して Nvim の組み込みファイルタイプ検出メカニズムに追加することです。手動で検出を処理する場合は、次の手順に従います。
A. すべてのデフォルトのファイルタイプチェックをオーバーライドする場合。これは、ファイルタイプごとに 1 つのファイルを作成することで機能します。欠点は、多数のファイルが存在する可能性があることです。利点は、このファイルを正しいディレクトリにドロップするだけで機能させることができることです。ftdetect
1. ユーザーのランタイムディレクトリを作成します。通常は、'runtimepath' オプションの最初の項目を使用します。次に、その中に "ftdetect" ディレクトリを作成します。Unix の例:
:!mkdir -p ~/.config/nvim/ftdetect
2. ファイルタイプを検出する自動コマンドを含むファイルを作成します。例:
au BufRead,BufNewFile *.mine                set filetype=mine
ファイルが読み込まれるときに "augroup" コマンドは実行済みであることに注意してください。パターン "*" を使用し、ファイルの内容をチェックして認識することもできます。このファイルをユーザーのランタイムディレクトリの "ftdetect" ディレクトリに "mine.vim" として書き込みます。たとえば、Unix の場合:
:w ~/.config/nvim/ftdetect/mine.vim
3. 新しいファイルタイプ検出を使用するには、Vim を再起動する必要があります。
"ftdetect" ディレクトリ内のファイルは、すべてのデフォルトチェックの後で使用されるため、以前に検出されたファイルタイプをオーバーライドできます。ただし、:setfiletype を使用して、以前に検出されたファイルタイプを保持することもできます。
B. デフォルトのファイルタイプチェックの後でファイルを検出する場合。
これは上記 A と同様に機能しますが、'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 -p ~/.config/nvim
2. ファイルタイプを検出する自動コマンドを含むファイルを作成します。例:
" my filetype file
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 ~/.config/nvim/filetype.vim
3. 新しいファイルタイプ検出を使用するには、Vim を再起動する必要があります。
あなたの filetype.vim は、デフォルトのファイルタイプ自動コマンドがインストールされる前に読み込まれます。あなたの自動コマンドが最初にマッチし、":setfiletype" コマンドにより、その後他の自動コマンドが 'filetype' を設定することがなくなります。new-filetype-scripts
D. ファイルの内容を調べてのみファイルタイプを検出できる場合。
1. ユーザーのランタイムディレクトリを作成します。通常、'runtimepath' オプションの最初の項目を使用します。Unix の例:
:!mkdir -p ~/.config/nvim
2. これを行うための Vim スクリプトファイルを作成します。例:
if did_filetype()        " filetype already set..
  finish                " ..don't do these checks
endif
if getline(1) =~ '^#!.*\<mine\>'
  setfiletype mine
elseif getline(1) =~? '\<drawing\>'
  setfiletype drawing
endif
さらに例については、$VIMRUNTIME/scripts.vim を参照してください。このファイルをユーザーランタイムディレクトリに "scripts.vim" として書き込みます。例えば、Unix の場合:
:w ~/.config/nvim/scripts.vim
3. 検出はすぐに動作し、Vim を再起動する必要はありません。
あなたの scripts.vim は、ファイルタイプに関するデフォルトのチェックよりも前にロードされるため、あなたのルールは $VIMRUNTIME/scripts.vim 内のデフォルトのルールを上書きします。
remove-filetype
もし、間違ったファイルタイプが検出された場合は、'filetype'ignored のような存在しない名前に設定することで、後で設定されるのを防ぐことができます。
g:did_load_filetypes
Nvim によって提供される組み込みのファイルタイプ検出は、did_load_filetypes グローバル変数を設定することで無効にできます。この変数が存在する場合、デフォルトの $VIMRUNTIME/filetype.lua は実行されません。
plugin-details
"plugin" ディレクトリは、'runtimepath' オプションの任意のディレクトリに配置できます。これらのディレクトリはすべてプラグインが検索され、すべてロードされます。例えば、このコマンドが
set runtimepath
この出力を生成する場合
runtimepath=/etc/vim,~/.config/nvim,/usr/local/share/vim/vim82
Vim はこれらのディレクトリと以下のサブディレクトリにあるすべてのプラグインをロードします。
/etc/vim/plugin/
~/.config/nvim/plugin/
/usr/local/share/vim/vim82/plugin/
最後のものは、$VIMRUNTIME の値が展開されたものであることに注意してください。
プラグインマネージャーや パッケージ を使用する場合、多くのディレクトリが 'runtimepath' に追加されることに注意してください。これらのプラグインはそれぞれ独自のディレクトリを必要とするため、~/.config/nvim/plugin に直接配置しないでください。
プラグインがロードされていないように見える場合はどうすればよいでしょうか? Vim の起動時に何が起こるかを確認するには、-V 引数を使用します。
vim -V2
多くのメッセージが表示されますが、その中にプラグインのロードに関する記述があります。それは以下から始まります。
"plugin/**/*.vim" を検索中
そこで、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
グローバルのファイルタイププラグインが正確にあなたが望む動作をしない場合、これを変更するには3つの方法があります。
1. いくつかの設定を追加します。'runtimepath' の早い段階のディレクトリに新しいファイルタイププラグインを作成する必要があります。例えば、Unix の場合、次のファイルを使用できます。
vim ~/.config/nvim/ftplugin/fortran.vim
追加したい設定やマッピングを設定できます。グローバルのプラグインはこの後にロードされるため、ここで行った設定を上書きする可能性があることに注意してください。この場合は、次の2つの方法のいずれかを使用する必要があります。
2. プラグインのコピーを作成して変更します。コピーは 'runtimepath' の早い段階のディレクトリに配置する必要があります。例えば、Unix の場合、次のようにします。
cp $VIMRUNTIME/ftplugin/fortran.vim ~/.config/nvim/ftplugin/fortran.vim
その後、コピーしたファイルを好みに合わせて編集できます。b:did_ftplugin 変数が設定されるため、グローバルのプラグインはロードされません。この方法の欠点は、配布されたプラグインが改善された場合、再度コピーして変更する必要があることです。
3. グローバルのプラグインをロードした後で設定を上書きします。'runtimepath' の終わりのディレクトリに新しいファイルタイププラグインを作成する必要があります。例えば、Unix の場合、次のファイルを使用できます。
vim ~/.config/nvim/after/ftplugin/fortran.vim
このファイルでは、変更したい設定のみを変更できます。

3. デフォルトのファイルタイププラグインのドキュメント。 ftplugin-docs

plugin_exec g:plugin_exec 外部コマンドの実行を有効にします。これは、例えば、検索パスを設定するために perl ファイルタイププラグイン(および他のいくつかのプラグイン)で歴史的に行われてきました。セキュリティ上の理由から、デフォルトでは無効になっています。
:let g:plugin_exec = 1
特定のファイルタイプに対してのみ有効にすることも可能です。
:let g:<filetype>_exec = 1
ruby に対してのみ有効にするには、次の変数を設定します。
:let g:ruby_exec = 1
グローバルの plugin_exec<filetype>_exec 特定の変数の両方が設定されている場合、ファイルタイプ特定の変数が優先される必要があります。
折りたたみを有効にするには、これを使用します。
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

Changelog ファイルへの Changelog エントリの簡単な入力を可能にします。探求する価値のあるいくつかのコマンド、マッピング、および変数があります。
オプション: 'comments' は、フォーマットを乱さないように空にされます。 'textwidth' は、標準である 78 に設定されます。 'formatoptions' テキストを挿入するときに折り返すように 't' フラグが追加されます。
コマンド: NewChangelogEntry は、インテリジェントな方法で新しい Changelog エントリを追加します(以下を参照)。
ローカルマッピング: <Leader>o は、同じようにインテリジェントな方法で新しい Changelog エントリを開始します(以下を参照)。
グローバルマッピング: 注: グローバルマッピングには、まず ftplugin/changelog.vim ファイルを読み込むことでアクセスします。例えば、次のように init.vim に記述します。
runtime ftplugin/changelog.vim
<Leader>o は、現在のディレクトリ用に開かれた ChangeLog バッファに切り替えるか、現在のディレクトリに存在する場合は新しいバッファで開きます。その後、上記のローカルの <Leader>o と同じ動作をします。
変数: g:changelog_timeformat 非推奨;代わりに g:changelog_dateformat を使用してください。 g:changelog_dateformat は、ChangeLog エントリで使用される日付(および時刻)の形式です。受け入れられる形式は、strftime() 関数と同じです。デフォルトは "%Y-%m-%d" であり、多くの ChangeLog レイアウトの標準形式です。 g:changelog_username は、ユーザーの名前とメールアドレスです。デフォルトは、環境変数とシステムファイルから推測されます。/etc/passwd から現在のユーザーのコメント部分を検索します。ここには、非公式には、最初の区切りコンマまでのユーザーの実際の名前が含まれています。次に、$NAME 環境変数を確認し、最後に whoamihostname を実行してメールアドレスを作成します。最終的な形式は次のとおりです。
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 ファイルの名前。デフォルトは 'ChangeLog' です。
b:changelog_path は、現在のバッファに使用する ChangeLog のパスです。デフォルトは空であり、現在のバッファと同じディレクトリにある b:changelog_name という名前のファイルを検索します。見つからない場合は、現在のバッファの親ディレクトリが検索されます。ファイルが見つかるか、検索する親ディレクトリがなくなるまで、これが再帰的に続きます。
b:changelog_entry_prefix は、新しいエントリのプレフィックスを生成するために呼び出す関数の名前です。この関数は引数を取らず、プレフィックスを含む文字列を返す必要があります。空のプレフィックスを返しても問題ありません。デフォルトでは、ChangeLog のパス名と現在のバッファのパス名の間で最短のパスが生成されます。将来的には、この変数に他の変数コンテキスト(例えば、g: など)を使用することも可能になる予定です。
変更履歴のエントリは、テキスト量が最も少なくなる場所に追加されます。現在の日付とユーザーを特定した後、ファイル内で現在の日付とユーザーで始まるエントリを検索し、見つかった場合はその下に別の項目を追加します。見つからない場合は、変更履歴の先頭に新しいエントリと項目が追加されます。
オプション: 'expandtab' は、ユーザーが vimrc で fortran_have_tabs を設定していない限り、Fortran の標準で要求されるタブを避けるためにオンになっています。'textwidth' は、固定ソース形式では 80 に設定され、自由ソース形式では 132 に設定されます。fortran_extended_line_length 変数を設定すると、固定ソース形式の幅が 132 に増加します。'formatoptions' は、コードとコメント行を分割し、長い行を保持するように設定されます。コメントは gq でフォーマットできます。fortran_have_tabs とソース形式の検出に使用される方法の詳細については、ft-fortran-syntax を参照してください。
このプラグインは、FreeBASIC の 4 つの方言、「fb」、「qb」、「fblite」、「deprecated」を別々の言語として扱うことを目的としています。
方言は、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

1 つのコマンド、:DiffGitCached が提供され、プレビューウィンドウに現在のコミットの diff を表示します。これは、「git diff --cached」にコマンドに与えられた引数を加えたものを呼び出すのと同じです。
デフォルトでは、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 に記述されています。
変数 "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> キーを使用してリストされたファイルをロードできます。
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()
または、7.4.265 より前の Vim バージョンでは、以下を使用します。
setlocal formatexpr=javaformat#RemoveCommonMarkdownWhitespace()
この関数は、行の範囲を受け入れ、共通の垂直方向の先頭の空白を削除し、範囲の行を書き換えます。作成者のレイアウトスタイルとコメントの内容に応じて、再フォーマットのために選択する行は、コメント全体からその一部にのみ変更される可能性があります。"g:java_ignore_markdown" または "g:java_ignore_javadoc" を削除した後に Markdown コメントの認識を有効にするには、8.2.1397 より大きい Vim バージョンでは、"javaformat.vim" を手動で再ソースすることを忘れないでください。
runtime autoload/javaformat.vim
オプション: 'modeline' は、トロイの木馬の危険を回避し、件名行に "Vim:" が含まれることによるエラーメッセージを回避するためにオフになっています。'textwidth' は 72 に設定されます。これは電子メールで推奨されることが多いです。'formatoptions' は、テキスト行を分割し、新しい行でコメントリーダーを繰り返すように設定されているため、引用符の先頭の ">" が繰り返されます。引用符付きテキストは gq でフォーマットすることもできます。
ローカルマッピング: <LocalLeader>q または \\MailQuote Visual モードで選択したテキスト、または Normal モードでカーソル位置からファイルの末尾までを引用します。これは、各行に "> " が挿入されることを意味します。
Nvim で man ページを表示します。強調表示、補完、ロケール、ナビゲーションをサポートします。find-manpage も参照してください。
man.lua は、常に最も近い man ウィンドウ (上/左) の再利用を試みますが、それ以外の場合は分割を作成します。
補完の大文字と小文字の区別は、'fileignorecase' によって制御されます。
コマンド: Man {name} {name} の man ページを表示します。Man {sect} {name} {name} およびセクション {sect} の man ページを表示します。Man {name}({sect}) 上記と同じです。Man {sect} {name}({sect}) 指定されたセクションがプレフィックスの場合に実際のセクションを表示するために補完中に使用されます。例: 1m 対 1。Man {path} {path} にある man ページを開きます。{path} が現在のディレクトリに対する相対パスの場合は、"./" を先頭に付けます。Man カーソル下の <cWORD> (man バッファ) または <cword> (非 man バッファ) の man ページを開きます。Man! 現在のバッファの内容を man ページとして表示します。
:Man はコマンド修飾子を受け入れます。たとえば、垂直分割を使用するには
:vertical Man printf
現在のウィンドウを再利用するには
:hide Man printf
ローカルマッピング: K または CTRL-] カーソル下の <cWORD> の man ページにジャンプします。セクションのカウントを取得します。CTRL-T man ページが開かれた場所に戻ります。gO man ページの概要を表示します。gO q :quit $MANPAGER として呼び出された場合、それ以外の場合は :close。
変数: g:no_man_maps man ページバッファにマッピングを作成しません。g:ft_man_folding_enable foldmethod=indent foldnestmax=1 で man ページを折りたたみます。b:man_default_sects コンマ区切りの優先セクションの順序付きリスト。たとえば、C では通常、セクション 3 または 2 が必要です。
:let b:man_default_sections = '3,2'
g:man_hardwrap $MANWIDTH または $MANWIDTH が空の場合はウィンドウ幅にハードラップします。デフォルトで有効になっています。FALSE を設定してソフトラッピングを有効にします。
Nvim を manpager として使用するには
export MANPAGER='nvim +Man!'
シェルから man を実行し、環境に MANPAGER がある場合、mangroff を使用して man ページを事前にフォーマットすることに注意してください。したがって、Nvim は必然的に stdin から渡されたマニュアルページを表示します。この注意点の 1 つは、幅が _常に_ ハードラップされ、g:man_hardwrap=0 の場合のようにソフトラップされないことです。環境で以下を設定できます。
export MANWIDTH=999
そのため、groff の事前フォーマット出力は、g:man_hardwrap=0 つまりソフトラップの場合と同じになります。
太字の強調表示を無効にするには
:highlight link manBold Normal
シェルで MANPAGER を使用する代わりに、man を再定義できます。たとえば
man() {
     nvim "+hide Man $1"
}

MARKDOWN ft-markdown-plugin

折りたたみを有効にするには、これを使用します。
let g:markdown_folding = 1
'expandtab' はデフォルトで設定されます。そうしたくない場合は、これを使用します。
let g:markdown_recommended_style = 0

PDF ft-pdf-plugin

PDF のナビゲーション用のタグスタックをシミュレートするために、2 つのマッピング、<C-]><C-T> が提供されています。以下はタグとして扱われます。
"startxref" の後の、xref テーブルへのバイトオフセット
トレーラー内の /Prev キーの後の、以前の xref テーブルへのバイトオフセット
xref テーブル内の "0123456789 00000 n" 形式の行
PDF 内の任意の場所にある "1 0 R" のようなオブジェクト参照
これらのマッピングは以下で無効にできます。
:let g:no_pdf_maps = 1
デフォルトでは、PEP8 に従って、以下のオプションが設定されます。
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
この動作を無効にするには、vimrc に次の変数を設定します。
let g:python_recommended_style = 0

QUERY ft-query-plugin

vim.treesitter.query.lint() を使用したインストール済みパーサーの treesitter クエリの lint は、デフォルトで BufEnter および BufWrite で有効になっています。lint をトリガーするイベントを変更するには、以下を使用します。
vim.g.query_lint_on = { 'InsertLeave', 'TextChanged' }
lint を完全に無効にするには、以下を設定します。
vim.g.query_lint_on = {}

QF QUICKFIX qf.vim ft-qf-plugin

"qf" ファイルタイプは、クイックフィックスウィンドウに使用されます。詳細については、quickfix-window を参照してください。
クイックフィックスファイルタイププラグインには、ステータスラインにクイックフィックスリストを生成したコマンドを表示するための設定が含まれています。この設定を無効にするには、以下のように設定します。
: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コードとReStructured Textで異なる値が動的に設定されます。'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 に記述されています。

SHADA ft-shada

バイナリの shada-file を編集しやすいようにします。開かれたバイナリファイルは次の形式で表示されます。
Type with timestamp YYYY-mm-ddTHH:MM:SS:
  % Key__  Description___  Value
  + fooba  foo bar baz fo  {msgpack-value}
  + abcde  abc def ghi jk  {msgpack-value}
Other type with timestamp YYYY-mm-ddTHH:MM:SS:
  @ Description__  Value
  - foo bar baz t  {msgpack-value}
  # Expected more elements in list
Some other type with timestamp YYYY-mm-ddTHH:MM:SS:
  # Unexpected type: type instead of map
  = {msgpack-value}
ファイルタイププラグインはすべての Cmd-event を定義します。定義された SourceCmd イベントは、「source file.shada」を「|:rshada| file.shada」と同等にします。BufWriteCmd, FileWriteCmd および FileAppendCmd イベントは、次の設定の影響を受けます。
g:shada#keep_old_header 真偽値。false に設定すると、書き込み時にすべてのヘッダーエントリが無視されます。デフォルトは 1 です。g:shada#add_own_header 真偽値。true に設定すると、最初に書き込まれるエントリは常に、データが添付されたマップ内の2つの値を持つヘッダーエントリになります。: v:version が "version" キーに添付され、"shada.vim" が "generator" キーに添付されます。デフォルトは 1 です。
フォーマットの説明
1. # はコメントを開始します。スペース文字で始まり、その後に # が続く行は無視されます。プラグインは、ShaDa フォーマットのエラーを示すコメント行のみを追加することがあります。空白以外の文字を含まない行も無視されます。2. 各エントリは、"{type} with timestamp {timestamp}:" という形式の行で始まります。{timestamp} は、実際の Unix タイムスタンプ値を表す strftime() でフォーマットされた文字列です。最初の strftime() 引数は %Y-%m-%dT%H:%M:%S に相当します。書き込み時、このタイムスタンプは msgpack#strptime() を使用して解析され、キャッシュされます(特定の strftime() 出力を生成したタイムスタンプを記憶し、タイムスタンプを変更しなかった場合はこの値を使用します)。{type} は、1 - ヘッダー、2 - 検索パターン、3 - 置換文字列、4 - 履歴エントリ、5 - レジスタ、6 - 変数、7 - グローバルマーク、8 - ジャンプ、9 - バッファリスト、10 - ローカルマーク、11 - 変更、* - 不明 (0x{type-hex}) のいずれかです。
各タイプは Unknown エントリを使用して表現できます。「Jump with timestamp ...」は「Unknown (0x8) with timestamp ....」と同じです。3. ヘッダーの後には、次のいずれかの行があります。1. " % Key__ Description__ Value": マップヘッダー。マッピングヘッダーの後に、コメントと " +"、キー、説明、および {msgpack-value} で構成される行を含むテーブルが続きます。キーは、説明と少なくとも2つのスペースで区切られ、説明は値と少なくとも2つのスペースで区切られます。マップ内の各キーは、"Key__" ヘッダーと同じ幅以下である必要があります。"Key" は最大 3 バイトのキーを許可し、"Key__" は最大 5 バイトのキーを許可します。キーが実際に占めるバイト数が少ない場合は、残りがスペースで埋められます。キーを空にしたり、スペースで終わらせたり、内部に2つの連続したスペースを含めたり、マルチバイト文字を含めたりすることはできません(これが必要な場合は "=" フォーマットを使用してください)。説明には、幅と内容に関する同じ制限がありますが、空の説明は許可されます。説明列は省略できます。
書き込み時、説明は無視されます。msgpack#equal のデフォルト値と同じ値を持つキーは無視されます。キーの順序は保持されます。すべてのキーは(バイナリ文字列ではなく)文字列として扱われます。
注:特にバッファリストエントリでは、複数のマップヘッダーを持つことが許可されています。ShaDaバッファリストエントリはマップの配列であるため、各マップヘッダーはバッファリスト内の新しいマップエントリを開始します。つまり、
Buffer list with timestamp 1970-01-01T00:00:00:
  % Key  Description  Value
  + f    file name    "/foo"
  + l    line number  1
  + c    column       10
は、以下と同等です。
Buffer list with timestamp 1970-01-01T00:00:00:
  = [{="f": "/foo", ="c": 10}]
また、
Buffer list with timestamp 1970-01-01T00:00:00:
  % Key  Description  Value
  + f    file name    "/foo"
  % Key  Description  Value
  + f    file name    "/bar"
は、以下と同等です。
Buffer list with timestamp 1970-01-01T00:00:00:
  = [{="f": "/foo"}, {="f": "/bar"}]
注2:特にレジスタエントリについては、配列の特別な構文が設計されました。
Register with timestamp 1970-01-01T00:00:00:
  % Key  Description  Value
  + rc   contents     @
  | - "line1"
  | - "line2"
これは以下と同等です。
Register with timestamp 1970-01-01T00:00:00:
  % Key  Description  Value
  + rc   contents     ["line1", "line2"]
このような構文は、配列表現が長すぎる場合に自動的に使用されます。2. " @ Description__ Value": 配列ヘッダー。マップと同じですが、キーは省略され、説明は省略できません。配列エントリは " -" で始まります。例
History entry with timestamp 1970-01-01T00:00:00:
  @ Description_  Value
  - history type  SEARCH
  - contents      "foo"
  - separator     '/'
は、以下と同等です。
History entry with timestamp 1970-01-01T00:00:00:
  = [SEARCH, "foo", '/']
注:レジスタエントリの特別な配列構文はここでは認識されません。3. " = {msgpack-value}": 生の値。この場合の {msgpack-value} は、完全に任意の型を持つことができます。ここでもレジスタエントリの特別な配列構文は認識されません。

RUST ft-rust

このプラグインのテキストは非常に長いため、別のファイル ft_rust.txt に記述されています。

SQL ft-sql

このプラグインのテキストは非常に長いため、別のファイル ft_sql.txt に記述されています。
*.texファイルの最初の行が次の形式の場合
%&<format>
これはファイルタイプを決定します:plaintex(plain 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"
現在、他のフォーマットは認識されていません。
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 ファイルタイププラグインは、[[ および ]] で関数の先頭と末尾に移動するマッピングを定義します。]" および [" でコメントを移動します。
マッピングは以下で無効にできます。
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 ftpluging: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 ファイルタイププラグインは、[[ および ]] で関数の先頭と末尾に移動するマッピングを定義します。
マッピングは以下で無効にできます。
let g:no_zimbu_maps = 1
メイン
コマンドインデックス
クイックリファレンス