Qual é a diferença entre `filetype plugin indent on` e` filetype indent on`?

39

Eu vejo uma dessas duas linhas nos .vimrcarquivos. Este parece ser o mais comum:

filetype plugin indent on

Mas como isso difere desta linha:

filetype indent on

Encontrei documentação para o último , mas ainda estou confuso.

Flimm
fonte
2
dica lateral: você pode fazer :filetypepara mostrar as configurações do tipo de arquivo.
wisbucky

Respostas:

48

filetype plugin indent on é como uma combinação destes comandos:

filetype on
filetype plugin on
filetype indent on

Ativa "detecção", "plugin" e "recuo" de uma só vez. Você pode verificar por si mesmo lendo :help :filetype-overview.

Detecção

O que a "detecção" do tipo de arquivo faz? Dos documentos:

Cada vez que um arquivo novo ou existente é editado, o Vim tenta reconhecer o tipo do arquivo e definir a opção 'tipo de arquivo'. Isso acionará o evento FileType, que pode ser usado para definir o realce da sintaxe, definir opções etc.

Isso é menos confuso se você perceber que o filetypecomando é distinto da filetypeopção. (O comando :filetype..., a opção :set filetype...:)

Plugar

O que a parte "plugin" faz? Dos documentos:

Na verdade, isso carrega o arquivo "ftplugin.vim" em 'runtimepath'.

O resultado é que, quando um arquivo é editado, seu arquivo de plug-in é carregado (se houver um para o tipo de arquivo detectado).

O arquivo que está sendo carregado não é necessariamente nomeado ftplugin.vim, poderia ser, ftplugin/html_example.vimpor exemplo.

Recuar

O que a parte "recuo" faz? Dos documentos:

Na verdade, isso carrega o arquivo "indent.vim" em 'runtimepath'.

O resultado é que, quando um arquivo é editado, seu arquivo de recuo é carregado (se houver um para o tipo de arquivo detectado). recuo-expressão

Novamente, o arquivo não pode ser nomeado indent.vim, pode ser nomeado indent/html_example.vimpor exemplo.

Flimm
fonte
1
para deixar claro, o nome do arquivo deve corresponder ao 'tipo de arquivo' para o qual será ativado, por exemplo, <type>/foobar.vim(um subdiretório por tipo de arquivo) <type>_foobar.vimou simplesmente <type>.vimonde <tipo> corresponde ao tipo de arquivo real
Christian Brabandt