TOKOROM BLOG

iOSとかVimとかその他日々の雑多な技術情報

もっと簡単にVimでObjective-Cのコード補完を実行する はてなブックマーク - もっと簡単にVimでObjective-Cのコード補完を実行する

Permalink

概要

先日、 VimでObjective-Cのコード補完を実行する With Clang でVimでclangを使ったコード補完をする方法について紹介させていただきましたが、今回はそのUpdate版になります。

というのも、clang_completeにはg:clang_auto_user_optionsという素晴らしいオプションがあり、これによりclang_complete本体をいじらなくてもiOS用の設定を簡単に拡張できることが分かったためです。
具体的には、clang_completeともう1つ、後述の拙作の plugin を1つインストールいただき、

  • after/ftplugin/objc.vim
1
let g:clang_auto_user_options = 'path, .clang_complete, ios'

という設定をするだけで多くのプロジェクトが .clang_complete ファイルなしでコード補完できるようになる見込みです(手元のプロジェクトは全て追加設定いらずでした)。 このオプションの中の、

Objective-Cで最近お気に入りのマクロ4つ はてなブックマーク - Objective-Cで最近お気に入りのマクロ4つ

Permalink

マクロ

マクロの利用については賛否両論がありますが、ぼくはわりかし使います。

※2013/1/9 追記

上記のとおり独自のマクロを使うこと自体に賛否両論あります。
例えば独自のマクロを定義して利用することで、

  • 他の人がコードを見たときに分かりづらくなる
  • 思わぬ不具合が出るケースがある
  • 名前の衝突リスクがある(マクロは名前空間が使えない)

などのデメリットがあります。 特にチームや会社でのご利用の際にはよくよくご留意をお願いします。

1. [NSString stringWithFormat:] を簡単に

1
NSString* message = [NSString stringWithFormat:@"HELLO %3.1d", 333.333];

[NSString stringWithFormat:]はよく使うのだが長くて面倒…とよく思ってしまう。
ということで、

Objective-Cで”@dynamic”の使いどころを考える はてなブックマーク - Objective-Cで

Permalink

Objective-Cの @dynamic はお好きですか?

ぼくはけっこう好きです。

@synthesizeのほうは昔はほぼ必須で書かないといけなかったり Xcode4.4で省略できるようになった ことで有名ですが、いっぽうで@dynamicのほうはあまり日の目を浴びていない気がします。

そこで、今日は@dynamicについて再考してみることにしました。
以下、ぼくが思い返してみて@dynamicがこんなときに便利だったと感じたところを2点挙げさせていただきます。
みなさまのほうでも「こんなとき便利だよ」というのがありましたら是非ご教示ください。

クラスの内部実装が適当なのを隠すときに

そもそもこの実装自体がどうかという話もあるのですが、リファクタリング前にひとまず雑な実装をしてしまうことはままあります。
例えば、ゲームスコアを管理するGameScoreクラスを作ったとして、その中で ハイスコア とかいくつかのスコアを管理する際、scoresというNSDictionaryインスタンスにささっと入れていたとします(ほんとは普通にプロパティにしたほうが良いですが例として)。

VimでObjective-Cのコード補完を実行する With Clang はてなブックマーク - VimでObjective-Cのコード補完を実行する with clang

Permalink

概要

VimやEmacsでiOSアプリ開発をするときに「Snippetとかちゃんと設定してればXcodeほどのコード補完は必要ない」と強がりを言ってはみるものの「本当はちょっとコード補完使いたいときあるんだよね」と思ってました。

そこで、重い腰をあげてVimでもObjective-Cのコード補完ができるよう設定してみました。

具体的には、

  1. clangコマンドでのコード補完を試してみる
  2. その結果をもってVimの clang_complete プラグインを導入する

という手順で実施しました。

結果として満足いく補完環境が整いましたので紹介させていただきます。

Mac + Terminal + Tmux + Vim でクリップボードを快適に使う はてなブックマーク - Mac + Terminal + tmux + vim でクリップボードを快適に使う

Permalink

Macの初期設定のたびに混乱してるので再整理しておきます。

  • Mac
  • Terminal
  • tmux
  • vim

で開発をする人向けです。

まずはMacVim KaoriYa

MacでVimを使うならひとまず MacVim KaoriYa は外せません。
日本語を扱う上で便利な設定がデフォルトで入ってます。

当然、Terminalでも Macvim KaoriYa を使いたいので、 .zshenv などに以下のaliasを設定してCUIで vivim を叩いたときにも MacVim KaoriYa が使われるようにします。

1
2
3
4
if [ -f /Applications/MacVim.app/Contents/MacOS/Vim ]; then
  alias vi='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'
  alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'
fi

tmux でも pbcopy/pbpaste が使えるようにする