4

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.

2 Answers 2

7

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

au Filetype python source ~/.vim/scripts/python.vim
2
  • 2
    Why creating non standard directories ? -> ~/.vim/ftplugin ! Dec 1, 2010 at 10:12
  • 1
    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, 2010 at 10:42
2

ft-plugins are what you are looking for.

See the following answers:

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .