Nvim :help
ページは、このスクリプトから ソース を使用して、tree-sitter-vimdoc パーサーによって生成されています。
mkdir -p ~/.config/nvim/ftplugin
set runtimepath?
setlocal softtabstop=4 noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> let b:undo_ftplugin = "setl softtabstop< | unmap <buffer> <LocalLeader>c"C ファイルを編集してみてください。'softtabstop' オプションが 4 に設定されていることに気付くはずです。しかし、別のファイルを編集すると、デフォルトのゼロにリセットされます。これは、":setlocal" コマンドが使用されたためです。これは、'softtabstop' オプションをバッファに対してローカルにのみ設定します。別のバッファを編集するとすぐに、そのバッファに設定された値に設定されます。新しいバッファの場合、デフォルト値または最後の ":set" コマンドの値が取得されます。
<buffer>
" コマンドは、現在のバッファに対してローカルなマッピングを作成します。これは、":map!", ":vmap" など、あらゆるマッピングコマンドで機能します。マッピング内の <LocalLeader> は、「maplocalleader」変数の値に置き換えられます。$VIMRUNTIME/ftplugin/ファイルタイププラグインの作成の詳細については、こちらをご覧ください: write-plugin。
augroup filetypedetect au BufNewFile,BufRead *.xyz setf xyz augroup ENDこれは、".xyz" で終わるすべてのファイルを "xyz" ファイルタイプとして認識します。":augroup" コマンドは、この自動コマンドを "filetypedetect" グループに配置します。これにより、":filetype off" を実行するときに、ファイルタイプ検出のすべての自動コマンドを削除できます。"setf" コマンドは、'filetype' オプションが既に設定されていない限り、引数に設定します。これは、'filetype' が 2 回設定されないようにします。
augroup filetypedetect au BufNewFile,BufRead *.xyz setf xyz au BufNewFile,BufRead /usr/share/scripts/* setf ruby augroup ENDただし、/usr/share/scripts/README.txt ファイルを編集する場合、これは ruby ファイルではありません。"*" で終わるパターンの危険性は、すぐに多くのファイルに一致してしまうことです。この問題を回避するには、filetype.vim ファイルを別のディレクトリ、'runtimepath' の最後にあるディレクトリに配置します。たとえば、Unix の場合は "~/.config/nvim/after/filetype.vim" を使用できます。テキストファイルの検出は ~/.config/nvim/filetype.vim に配置します。
augroup filetypedetect au BufNewFile,BufRead *.txt setf text augroup ENDそのファイルは、最初に 'runtimepath' にあります。次に、最後にある ~/.config/nvim/after/filetype.vim でこれを使用します。
augroup filetypedetect au BufNewFile,BufRead /usr/share/scripts/* setf ruby augroup ENDこれで、Vim は 'runtimepath' の各ディレクトリで "filetype.vim" ファイルを検索します. 最初に ~/.config/nvim/filetype.vim が見つかりました。
*.txt
ファイルをキャッチする自動コマンドがそこで定義されています。次に、Vim は $VIMRUNTIME の filetype.vim ファイルを見つけます。これは 'runtimepath' の途中です.最後に ~/.config/nvim/after/filetype.vim が見つかり、/usr/share/scripts 内の ruby ファイルを検出するための自動コマンドが追加されます。/usr/share/scripts/README.txt を編集すると、自動コマンドは定義された順序でチェックされます。 *.txt
パターンが一致するため、"setf text" が実行されてファイルタイプが "text" に設定されます。ruby のパターンも一致し、"setf ruby" が実行されます。しかし、'filetype' が既に "text" に設定されているため、ここでは何も起こりません。/usr/share/scripts/foobar ファイルを編集すると、同じ自動コマンドがチェックされます。ruby のものだけが一致し、"setf ruby" が 'filetype' を ruby に設定します.if did_filetype() finish endif if getline(1) =~ '^#!.*[/\\]xyz\>' setf xyz endifdid_filetype() による最初のチェックは、ファイル名によって既にファイルタイプが検出されているファイルの内容をチェックしないようにするためです。"setf" コマンドが何も実行しない場合に、ファイルのチェックに時間を無駄にすることを回避します。scripts.vim ファイルは、デフォルトの filetype.vim ファイルの自動コマンドによってソース化されます。したがって、チェックの順序は次のとおりです.