以前介紹過一些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.vim2 \| let b:match_words = '@\(implementation\|interface\):@end'3 \| setl inc=^\s*#\s*import omnifunc=objc#cocoacomplete#Complete4 \| 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=objcpp4 else5 set filetype=cpp6 endif7 endfunction8 9 map<F4> :call ChangeFileTypeBetweenCppAndObjcpp()<ENTER>
這樣就可以按F4切換.mm檔案的類型,以令其適應不同的外掛程式。