How to change Vim behaviour using single .vimrc
file (without ftplugin) in elegant way ?
What do I mean is ... if I run many commends for C/C++ file , e
You can use the following:
if has("autocmd")
augroup LISP
au!
au BufReadPost *.cl :set lisp
au BufReadPost *.cl :set showmatch
au BufReadPost *.cl :set cpoptions-=m
au BufReadPost *.cl :set autoindent
augroup END
augroup C
au!
autocmd BufNewFile,BufRead *.cpp set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
autocmd BufNewFile,BufRead *.c set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
autocmd BufNewFile,BufRead *.h set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
autocmd BufNewFile,BufRead *.cpp set tw=80
autocmd BufNewFile,BufRead *.c set tw=80
autocmd BufNewFile,BufRead *.h set tw=80
augroup END
endif
This created grouping of commands depending on the type of file that is opened, which is specified in the autocmd section. You still need to specify autocmd or au before each one, but they are nicely grouped.
I'd probably do per-filetype functions to do the setup for me. Shamelessly ripping off @Derek...
function! SetUpLispBuffer()
set lisp
set showmatch
set cpoptions-=m
set autoindent
endfunction
function! SetUpCBuffer()
set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
set tw=80
endfunction
if has("autocmd")
augroup LISP
au!
au BufReadPost *.cl call SetUpLispBuffer()
augroup END
augroup C
au!
autocmd BufNewFile,BufRead *.{cpp,c,h} call SetUpCBuffer
augroup END
endif
A lot less to change when you want to make changes and much less cut&paste too.