On Tue, January 31, 2012 8:16 am, Clark J. Wang wrote: > On Tue, Jan 31, 2012 at 15:11, Christian Brabandt > <[email protected]>wrote: > >> On Tue, January 31, 2012 8:05 am, Clark J. Wang wrote: >> > I have some files named in the *.kshlib format which are ksh scripts >> but >> > vim always recongnized them as "ft=conf". So how can I force vim to >> > consider those files as "ft=sh"? >> > >> > I tried following in vimrc but it did not work: >> > >> > autocmd BufReadPost * >> > \ if bufname('%') =~ '^.*\.kshlib$' | >> > \ exe 'normal set ft=sh' | >> > \ endif >> > >> >> :h new-filetype >> > > Thanks I see the example "au BufRead,BufNewFile *.mine set filetype=mine" > and that works for me. But what's wrong with my original post though it's > a > bit complicated? >
It looks weird. The whole point of the BufReadPost autocommand is to match against a file name, in your case you use the wildchar * to match against any file pattern, but within the autocommand, you only want to match against .kshlib. Secondly, your exe 'normal set ft=sh' is wrong, you missed the colon and additionally you don't need neither the 'exe' nor the 'normal command so this statement can be simplified to :set ft=sh. After all your whole autocommand can then be simplified to au BufReadPost *.kshlib :set ft=sh which is basically the same autocommand, that is given below :h new-filetype, except that you are still missing the BufNewFile autocommand. regards, Christian -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
