最后更新于 .

新年伊始,首先祝大家新年快乐~~ 今天和朋友看了一下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

Pingbacks

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. 依云

    依云 on #

    可以写到 ~/.vim/filetype.vim 或 $VIM/vimfiles/filetype.vim 里,它比 Vim 自己的 filetype.vim 先执行(执行顺序参见 runtimepath 选项的值)。

    Reply

    1. Dante

      Dante on #

      呃,这个其实我试过,但是还是没有用……对于autocmd来说,执行顺序改变没有什么效果,关键是需要将原来autocmd给覆盖掉~~~

      Reply

  2. iroger

    iroger on #

    我以前用过这个, 我是用第一种方案!
    augroup filetypedetect
    au! BufNewFile,BufRead *.as setf actionscript
    augroup END

    中autocmd 是什么意思!
    au! BufNewFile,BufRead *.as setf actionscript
    呢! 有空给我说一下吧!THX!

    Reply

发表评论