Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

XVim swift応用編

この記事では、XVimに組み込まれたswift関連機能の説明をします。

XVimとはXcodevimキーバインドにするXcodeプラグインです。 インストール方法や使い方はこちらを参照して下さい。

XVimProject/XVim · GitHub

この機能をXVimに取り入れたモチベーションの説明をします。
Xcode で例えば、Request.swift から NSURLRequest の定義にジャンプしたとします。

f:id:pebble8888:20151123143806p:plain

こんな画面になりますね。(画面Aとします)
swiftのソースファイルからSDK内の定義にジャンプした場合、 Foundation -> NSURLRequest の swift 文法での定義の内容が表示されます。 これはXcodeが内部的に、 Objective-Cで書かれた次のパスにあるヘッダファイル /Applications/Xcode.app/Contents/Developer/Platforms/ iPhoneSimulator.platform/Developer/ SDKs/iPhomeSimulator.sdk/System/Library/Frameworks/ Foundation.framework/Header/NSURLRequest.hswiftに変換して表示しているのだと思われます。

一方、例えばObjective-Cで書かれたファイル Request.m から NSURLRequest の定義にジャンプした場合は、 このObjCのヘッダファイルが直接表示されます。

しかしながら、Objective-Cswift を混合で使っているxcodeprojectの場合、swiftのヘッダが表示されている状態から、 外部エディタでobjcのヘッダの方を開きたい場合と、swiftのヘッダの方を開きたい場合と両方があります。

私が調べた限り、このobjcヘッダファイルからswiftのファイルを生成するコマンドが見つからなかったので(ご存知の方は教えて下さい。)、XVimで対応することにしました。 objcのファイルを開きたい場合はobjcヘッダパス(#に入る)をそのまま外部エディタに渡します。 swiftのファイルを開きたい場合は、Xcodeの画面に表示されているswiftの文字列全てをファイルに書き出しそのパス(%に入る)を外部エディタに渡します。

画面Aの状態から、swiftのファイルを外部エディタ(ここではMacVim)で開くには、以下を~/.xvimrcに追加して利用します。

noremap ,t :execute "!/Applications/mvim +" . line(".") . " %"<CR>

f:id:pebble8888:20151123145822p:plain

objcのヘッダファイルを外部エディタで開く場合は、以下のようにします。

noremap ,r :execute "!/Applications/mvim +" . line(".") . " #"<CR>

f:id:pebble8888:20151123145917p:plain

また、ArrayやInt32などが含まれるswiftコアモジュールにも対応しています。

f:id:pebble8888:20151123150328p:plain

ベースとなる知識についてはこちらを参照して下さい。
https://github.com/vim-jp/vimconf/blob/gh-pages/2014/slides/10_XVim_with_MacVim_and_smartgrep__pebble8888.pdf

今回紹介した機能(のXcode7対応版)はまだXVimのmasterブランチに取り込まれていませんので、 こちらのdevelopブランチを利用して下さい。

https://github.com/pebble8888/XVim.git

XVim以外でこの機能を使いたいという方は、この機能のみを入れたXcodePluginを自作するという手もあります。

以上、 XVim swift応用編でした。

swiftオープンソース化されましたね。

apple/swift · GitHub

swiftはまだ発展途上なので、進化が加速することを期待したいです。