「filetype plugin on」は実際には何をしますか?


11

ftplugin.vimファイルをロードすることを理解していますが、実際には何をしますか?(ファイルタイプに応じて)オプションを設定しますか?

vimrcの最初にこの行を含める場合

filetype plugin indent on

そして、私はこの行の後にいくつかのオプションを設定しました(autoindent、smartindentなど)、それらは混乱しますか?ファイルタイププラグインまたはインデントファイルの影響を受けるオプションを知るにはどうすればよいですか?

回答:


7

には実際に良い説明がありhelp filetypeます。

ファイルタイプに定義されているオプションは、次のように設定されsetlocalます。

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

たとえば、次のように/usr/share/vim/vim80/ftplugin/javascript.vim定義します。

setlocal commentstring=//%s

ローカルオプションはグローバルオプションよりも優先されるため、.vimrc設定は無視される可能性があります。その場合は、ファイル~/.vim/after/ftplugin/javascript.vim(変更するファイルタイプの名前を含む)を作成し、setlocalそこに独自のオプションを設定する必要があります。

設定されているオプションを確認する最も簡単な方法は/usr/share/vim/vim80/ftplugin../indentとでファイルタイプのファイルを開くことです../syntax


1
E492:エディターコマンドではありません:プラグインがオン[インデントも同じ]
トニー

この回答の最後の文は間違っています。filetype plugin onfiletype indent onは実際には別個のコマンドですが、両方を組み合わせてを生成できますfiletype plugin indent on
ルスラン

@Ruslanありがとう、私はその文章を削除しました。
laktak

2

これは、特定のパターンに一致するファイルが開かれたときに実行されるオートコマンドを定義します。これらの自動コマンドsource順番にファイルタイププラグイン認識ファイルタイプに関連付けられています。

これらのファイルタイププラグインスクリプトでは、vimスクリプトに入力できるすべてのものを検索/記述できます。良い習慣は決してグローバルなものではなく、ローカルなものだけを定義することです。つまり:

  • ローカルオプション :setlocal opt=value
  • ローカルマッピング :[cnivsxot](nore)map <buffer> ...
  • :iab-<buffer> ...&coを使用したローカルの略語
  • ローカルコマンド :command -b ...
  • ローカル変数 :let b:var = 42

について

  • メニューでは、ローカルメニューをエミュレートするプラグインを使用する必要があります。MichaelGeddesのプラグインまたは私の最新のフォークを参照してください。
  • 関数は、ftpluginsに置くことができますが、オートロードプラグインで定義するのが最適です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.