用vim写ios程序

以前介绍过一些vim插件,有两个插件是方便写iOS程序的,即cocoa和objc_matchbracket(以下称objc_mb)。cocoa插件主要用来补全cocoa框架的API名,objc_mb则用来自动补全中括号。

不过这两个插件都不支持后缀.mm的objective-C++文件,需要做一些改动。

在vim中运行

1 :e $VIMRUNTIME/filetype.vim

发现vim收集的文件类型还挺全的,连.mm文件是objcpp都知道……

于是让插件支持objcpp类型就行了。

1) cocoa插件:

打开~/.vim/plugin/cocoa.vim,有如下一段:

1 au FileType objc ru after/syntax/objc_enhanced.vim
2                \| let b:match_words = '@\(implementation\|interface\):@end'
3                \| setl inc=^\s*#\s*import omnifunc=objc#cocoacomplete#Complete
4                \| if globpath(expand('<afile>:p:h'), '*.xcodeproj') != '' |
5                \  setl makeprg=open\ -a\ xcode\ &&\ osascript\ -e\ 'tell\ app\ \"Xcode\"\ to\ build'
6                \| endif

当然看不懂,不过把这段复制一遍,再把第1行的objc改成objcpp就可以让cocoa插件支持objective-C++了。

2) objc_mb插件:

打开~/.vim/ftplugin/objc_matchbracket.vim

看不懂关掉。复制此文件,文件名改为objcpp_matchbracket.vim,再把里面的objc替换成objcpp就成了。

这样就可以在.mm文件中享用二插件了。

不过还是有问题——原来一堆C,C++插件不认.mm文件。笔者是在.vimrc文件中写了个补丁,可以手动修改.mm文件的类型——objcpp或cpp:

1 function ChangeFiletypeBetweenCppAndObjcpp()
2     if &filetype=="cpp"
3         set filetype=objcpp
4     else
5         set filetype=cpp
6     endif
7 endfunction
8 
9 map<F4> :call ChangeFileTypeBetweenCppAndObjcpp()<ENTER>

这样就可以按F4切换.mm文件的类型,以令其适应不同的插件。

posted @ 2012-07-12 22:21  chncwang  阅读(3015)  评论(2编辑  收藏  举报