I see one of these two lines in .vimrc
files. This one seems to be most common:
filetype plugin indent on
But how does it differ from this line:
filetype indent on
I've found documentation for the latter, but I'm still confused.
I see one of these two lines in .vimrc
files. This one seems to be most common:
filetype plugin indent on
But how does it differ from this line:
filetype indent on
I've found documentation for the latter, but I'm still confused.
filetype plugin indent on
is like a combination of these commands:
filetype on
filetype plugin on
filetype indent on
It turns on "detection", "plugin" and "indent" at once. You can check for yourself by reading :help :filetype-overview
.
What does filetype "detection" do? From the docs:
Each time a new or existing file is edited, Vim will try to recognize the type of the file and set the 'filetype' option. This will trigger the FileType event, which can be used to set the syntax highlighting, set options, etc.
This is less confusing if you realise that the filetype
command is distinct from the filetype
option. (The command :filetype...
, the option: :set filetype...
)
What does the "plugin" part do? From the docs:
This actually loads the file "ftplugin.vim" in 'runtimepath'.
The result is that when a file is edited its plugin file is loaded (if there is one for the detected filetype).
The file being loaded is not necessarily named ftplugin.vim
, it could be ftplugin/html_example.vim
for instance.
What does the "indent" part do? From the docs:
This actually loads the file "indent.vim" in 'runtimepath'.
The result is that when a file is edited its indent file is loaded (if there is one for the detected filetype). indent-expression
Again, the file may not be named indent.vim
, it could be named indent/html_example.vim
for instance.
<type>/foobar.vim
(a subdirectory per filetype) or <type>_foobar.vim
or simply <type>.vim
where <type> corresponds to the actual filetype
Commented
Nov 7, 2016 at 11:10
:filetype
to show the filetype settings.filetype plugin indent on
is included in Tim Pope's vim-sensible.