Swift を Vim で補完しながら書いてみる
Posted on 14 February 2016.ふと思い立って、Vim で Swift の補完をするプラグインを書いたので紹介。
mitsuse/neocomplete-kitten: A neocomplete source of Sourcekitten for Swift.
モチベーション
Xcode には XVim という大変便利なプラグインがありますが、 Swift に限っていえば、 SourceKit もあるのでこのアプローチもありではと思った次第。
すべての作業を Vim で完結させることは狙ってはおらず、 あくまでも Xcode (とその周辺の CLI ツール群もふくめて) と Vim でうまくすみわけができればと妄想しています。 たとえば、実装作業は Vim で、 それ以外 (プロジェクトの設定や Interface Builder で UI 設計) は Xcode で、などなど。
仕組み
neocomplete から SourceKitten 経由で SourceKit と通信しています。 SourceKit が補完候補は生成してくれるので、 neocomplete-kitten の主な責務としては、 今の所は補完位置とタイミングの調整ぐらいです。
サポートしている機能
今の所、Swift 標準ライブラリと単一ファイル (の中で定義された型・メソッド・関数など) に対応しています。 とはいえ、SourceKit に SourceKitten 経由で丸投げしているので、 SourceKit でできることの一部といったところでしょうか。
- 型名の補完 (
:
のあとの親クラス・プロトコルやパラメーターの型、->
につづく結果型) static
なメンバー・インスタンスのメンバー名の補完- 関数・メソッドのパラメーター名の補完
- トップレベルの関数・定数・変数の補完
今後
とりあえず動く状態にもってこれたので、すこしづつ拡張していく予定です。
- 関数・メソッド補完時にパラメーターのプレースホルダーをうまく利用する。
- Framework/SDK に対応した補完
- これまで Vim script 自体まともにかいたことがなかったので、そのあたりの知識をきっちりする。