Code Swift with Vim
Swift 是今年 Apple 發表的程式語言,在發表的隔月就衝上了 TIOBE 排行榜的前 20 名。不過因為目前還在 Beta 中,所以除了改規格之外,開發工具的穩定性也還有待加強。
因為我已習慣用終端機 + Vim 工作,所以用 Vim 來練習寫 Swift 也是很正常的(誤)。不過其實真正的原因是之前 beta 版的 Xcode 太容易因為語法錯誤而當掉了。
Vim plugin
Vim 什麼沒有,plugin 最多了。不過因為 Swift 剛出來沒多久,外掛還不太多。我目前只有使用 vim-swift 這個 plugin,有支援語法 highlight。
Swift REPL
寫 Ruby/Rails 時已很習慣有 irb
之類的 REPL(Read–Eval–Print Loop) 可以用,Swift 這回也有提供 REPL。
因為在我電腦裡同時有安裝 Xcode 5 以及 Xcode 6 beta 5,所以在使用前得需先修改一下設定,開啟終端機後輸入:
$ sudo xcode-select -switch /Applications/Xcode6-Beta5.app
上面這個指令路徑設定可能會隨著 Xcode 6 的版本不同而需要做些調整。設定完之後,輸入:
$ xcrun swift
或
$ lldb --repl
即可進入 Swift 的 REPL 環境。
編譯
如果只是要寫個沒有畫面的小工具的程式,其實是不需要開 Xcode 的,只要一個簡單的 .swift 檔就可以了。
// 檔案 hello.swift
println("Hello, Swift!")
然後執行:
$ xcrun swift hello.swift
應該會在畫面上印出 Hello, Swift!
字樣。如果想要進行編譯,可執行:
$ xcrun swiftc hello.swift
這會在該目錄產生一個同名的 hello
執行檔(注意,是 swiftc
而不是 swift
)。
註:以上是以 Xcode 6 Beta 5 為示範,在之前的版本的指令稍有不同。
自動執行
如果每次寫完存檔就要再執行一次 xcrun swift
也太辛苦了,工程師都是很懶的。有個不錯用的 gem 叫做 Guard可以幫你監視檔案的狀態,一但檔案有異動就跟著執行某些指令。
安裝 gem 是件輕鬆愉快的事,只要一行:
$ gem install guard-shell
如果安裝順利,下一步是請 guard 幫我們產生一個 Guardfile:
$ guard init shell
你應該可以在該目錄看到 Guardfile 檔案。我稍微做了些小修改如下:
guard :shell do
watch(/(.*).swift/) do |m|
puts "-" * 20
puts `xcrun swift #{m[0]}`
end
end
這個設定檔沒有很特別的東西,大概就是每次執行前先印出個分隔線,然後再印出 xcrun swift
的執行結果。接著只要在該目錄執行 guard
即可進入監看模式。
小結
因為 Vim 指法已習慣成肌肉記憶(muscle memory),所以我的 Xcode 也通常會安裝 XVim 讓 Xcode 可支援部份的 Vim 指令,不然完全沒辦法工作了。
是說像這樣用 Vim 寫 Swift,練練語法還 ok,但要靠 Vim 純手工刻出 iOS app 真的不是一般人能做到的事,所以其實我真正開發的時候,還是需要依賴 IDE 幫忙的,不然 method name 那麼長、參數那麼多,不靠 IDE 的自動完成,怎麼可能記得住。
即使如此,我個人還是覺得,可以用 Vim 寫程式,就是莫名的有種阿宅的浪漫啊 :)