新年伊始,首先祝大家新年快乐~~ 今天和朋友看了一下flash对3D的支持,需要用到扩展名为.as的actionscript文件(虽然我暂时确实不知道怎么写它……),于是就尝试着用vim来编辑它。 首先,下载actionscript着色文件:actionscript.vim,放到syntax目录下。然后打开一个.as文件。 结果事与愿违,由于atlas和actionscript都可以用as扩展名,而vim却将.as文件认做是atlas文件,所以着色完全不对。解决方法有三,其中第三种是最好的,但是作为思路,还是3中方案全部记录在这里:
1.修改filetype.vim文件 在vim72目录下有一个filetype.vim文件,找到
Atlas au BufNewFile,BufRead *.atl,*.as setf atlas
修改为
au BufNewFile,BufRead *.atl setf atlas
au BufNewFile,BufRead *.as setf actionscript
这样就可以了。
---------------------------------我是华丽的分割线---------------------------------
在说明后两种方法之前,大家首先需要了解一下,由于用的是autocmd,所以无论你自己写的autocmd先执行,或者是filetype.vim中的autocmd先执行,实际上最后在autocmd映射的指令真正执行时,我们是控制不了的,所以无论是放在ftplugin,syntax或者after下,或者在vimrc中写,都是没有用的;
方法在与变换autocmd的写法
2.在BufRead之后执行 在vimrc文件中,写下:
au BufWinEnter *.as setf actionscript
由于BufWinEnter比BufRead晚执行,所以就可以正确的显示着色啦
3.强制使用vimrc中的autocmd 在vimrc文件中,写下:
augroup filetypedetect au! BufNewFile,BufRead *.as setf actionscript augroup END
注意到有一个!,这个就会强制使用当前的autocmd
依云 on #
可以写到 ~/.vim/filetype.vim 或 $VIM/vimfiles/filetype.vim 里,它比 Vim 自己的 filetype.vim 先执行(执行顺序参见 runtimepath 选项的值)。
Reply
Dante on #
呃,这个其实我试过,但是还是没有用……对于autocmd来说,执行顺序改变没有什么效果,关键是需要将原来autocmd给覆盖掉~~~
Reply
iroger on #
我以前用过这个, 我是用第一种方案!
augroup filetypedetect
au! BufNewFile,BufRead *.as setf actionscript
augroup END
中autocmd 是什么意思!
au! BufNewFile,BufRead *.as setf actionscript
呢! 有空给我说一下吧!THX!
Reply