MacVimとcocoa.vimで世界が変わった

続き書きました→d:id:marutanm:20100610

こんにちは、iPhoneアプリ開発者見習いです。アイコンどうしようとか説明文かくのめんどくさいといった理由で今のところStoreに成果物は並んでいません。そろそろちゃんと形にしないと。

さて、iPhoneアプリ開発には、みんな大好きXcodeを使うわけです。Objective-Cはメソッド名が長くなりがちなので、それを補完してくれないと開発が成り立ちません。その点、Xcode付属のエディタはばっちり補完してくれるし、補完後には変数だけを入力していくこともできたりしてチョー便利。Vim派でもEmacs派でもないへたれエンジニア*1なので、それなりに使えてそれなりに満足していたわけですが、もう少しカーソル移動を快適にしたいなと思い、XcodeのエディタにVimを設定できないかと色々と調べてみました。そしてたどり着いたcocoa.vimがものすごく便利だったので、そのご紹介。

cocoa.vim

Objective-C用のシンタックスハイライトやコード補完、ドキュメント参照などを実現するためのVimプラグイン。

と、概要は一行で説明できてしまうんだけど、その便利さは今まで長くXcodeを使ってきた人ほどグッとくること間違いなし。ハイライト表示やコード補完は当然としても、例えば Cmd+R でのビルド実行、Cmd+0Xcodeのプロジェクトウィンドウに戻るといったキーバインドが実現される*2。そして個人的にcocoa.vimの導入の決め手となったのがCmd+Opt+↑ での.hファイルと.mファイルのトグル。実はXcodeのエディタとしてVimを導入しようとしたのは過去にもあったのだけど、その時はこのトグルができなくて断念した覚えあり*3。エディタを割って常時開いておくほどでもなく、サッとヘッダファイルを確認したいときに便利で、やたら多用していたことをできなくなって初めて思い知ったりしたわけです。さらに、:ListMethods というコマンドが用意されていて、TagListみたいなこともこれだけでできる。なんとも便利プラグインなわけです。
これだけにはとどまらない。Xcodeのエディタでの補完は便利なもので、メソッド名を補完した場合にその引数はプレースホルダとなっている。Cmd+.プレースホルダだけをつぎつぎ置き換えていくことができたりする。Vimでそんなことができるかって?イエス、イネイブル!*4押すべきはTabキーのみ。もはや全てのCocoa/Objective-CプログラマはMacVimをXcodeのエディタとして設定し、cocoa.vimを導入すべき。
と、環境整備ばっかりしていてさっぱりコードを書いていない。こういうエントリは実際にバリバリ使ってみてから書くべきだよね。

cocoa.vimの導入方法
  1. http://www.vim.org/scripts/script.php?script_id=2674からプラグインをダウンロード(zipになってる)
  2. ターミナルで
unzip cocoa.zip -d ~/.vim 
キーマッピング

ヘルプファイルを読めばいいんだけど、自分を含めて面倒な人用簡易まとめ。

コマンド 内容
K カーソルがあるところの単語をドキュメントから検索
Cmd+Opt+↑ .hファイルと.mファイルのトグル
Cmd+r ビルド&実行
Cmd+b ビルド
shift+k クリーン
Cmd+0 Xcodeのプロジェクトウィンドウを開く
Cmd+2 :ListMethods(メソッド一覧)
(インサートモードで)F5 オムニ補完を表示

MacVim

ついでにMacVimの設定も書いておく。あらかじめSpacesでXcodeとは違うディスプレイで起動するよう設定し、起動時からフルスクリーン表示になるように.gvimrcに設定を書いている。

if has('gui_macvim')
	set transparency=10	" 透明度を指定
	set antialias
	set guioptions-=t	" ツールバー非表示
	set guioptions-=r	" 右スクロールバー非表示
	set guioptions-=R
	set guioptions-=l	" 左スクロールバー非表示
	set guioptions-=L
	set guifont=Osaka-Mono:h14

	set imdisable		" IMを無効化
	
	"フルスクリーンモード	
	set fuoptions=maxvert,maxhorz
  	autocmd GUIEnter * set fullscreen 
	
	colorscheme wombat256
endif

*1:強いて言うならVimのほうが慣れてる

*2:MacVimなんかのGUIベースのVimを使う必要あり

*3:かといってプラグイン探すでもなく、自分でどうにかするでもなく・・・

*4:ただしsnipMateっていう別のプラグインが必要になる