I work with several languages and markups in vim every day (ruby, python, javascript, CSS, HTML, etc), and would like to have different settings for each buffer when I fire up my editor. How can I detect which syntax is loaded in the current buffer?

Specifically, I really prefer python indent to be 4 spaces, while other languages are find with 2. I've envisioned something like this in my .vimrc file:

if syntax == 'python'
  set softtabstop=4
  set shiftwidth=4
else if syntax == 'html'
  " ...
endif

Anything like that in vim? thanks.

link|improve this question

73% accept rate
feedback

2 Answers

up vote 2 down vote accepted

Use the FileType autocommand event. See :h autocmd.txt for details.

au Filetype python source ~/.vim/scripts/python.vim
link|improve this answer
2  
Why creating non standard directories ? -> ~/.vim/ftplugin ! – Luc Hermitte Dec 1 '10 at 10:12
Thanks - what I ended up doing is using your idea with some modification: au FileType python set softtabstop=4 | set shiftwidth=4 – sa125 Dec 1 '10 at 10:42
feedback

ft-plugins are what you are looking for.

See the following answers:

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.