I'm going through my vim dotfiles to tidy them up. I've noticed that through time I've added various filetype specific settings in various inconsistent ways. Let's suppose I'm customizing for Python:
au BufRead,BufNewFile *.py (do something)
. I don't like this because some Python files might not have the .py termination.au FileType python (do something)
. This seems a better option because it doesn't depend on the file having the .py termination. The drawback is that Vim doesn't know about some filetypes. I can make Vim recognize additional filetypes, but I also have various inconsistent ways of doing it: a.vim/filetype.vim
file, another in.vim/after/filetype.vim
and variousset filetype
commands in.vimrc
.Add a
.vim/ftplugin/python.vim
file with filetype specific settings. I understand the$VIMRUNTIME/ftplugin/python.vim
can override whatever settings I make here. One problem is that I'm not sure how this interacts with.vim/filetype.vim
and.vim/after/filetype.vim
.Add a
.vim/after/ftplugin/python.vim
. I understand that this is loaded after$VIMRUNTIME/ftplugin/python.vim
so it can overwrite settings from there. As in the previous method I'm not sure how it interacts with thefiletype.vim
files.
So I have at least four ways of doing this, not mentioning syntax files and filetype-specific plugins. It seems to me the best way to do this is to put my filetype specific settings in after/ftplugin
so they don't get overwritten, and filetypes.vim
in after
for the same reason.
However, before I proceed I'd like to ask if anyone has suggestions about the best way to deal with filetype specific settings.