REPL-driven development

開發 clojure ,不免要做的事情自然是不停地調用 REPL 來測試自己寫的函數是否如預期般地執行,而 vim 可以安裝 plugin ,讓這個調用 REPL 的步驟完全留在編輯器內執行。這個開發方式又稱為 REPL-driven development 。

安裝 vim-fireplace

首先要準備幾樣東西:

  1. clojure 的 nREPL
  2. vim

在 vim 裡安裝合適的 plugin :

cd ~/.vim/bundle
git clone git://github.com/tpope/vim-fireplace.git

啟用方式:

  1. 在 clojure 的專案資料夾,開啟一個 shell ,啟動 nREPL。指令是 lein repl

    搭配 tmux 來使用: tmux new-session -d -s repl 'lein repl'

  2. 在同一個資料夾,開啟另一個 shell ,啟動 vim 。如此一來, vim 的 fireplace plugin 就會自動與 nREPL 連接了。

文字檔不在 clojure 專案資料夾內時,fireplace 的啟用方式:

  1. 還是一樣啟動 nREPL。指令是 lein repl
  2. 如果文字檔並不是 clj 結尾。需要先讓 vim 知道它是 clojure 的 source code ,下指令

    :set filetype=clojure

  3. 連線到現在已經啟動的 nREP ,例如下指令

    :Connect nrepl://127.0.0.1:41767

常用指令:

求值

  1. 隨便選一個 expression 做 repl 移動游標到程式碼上,然後
    :Eval 。 快速鍵是 cpp
  2. 指定一段區間的程式碼做 repl :1,3Eval
  3. 打開 Clojure 的 Quasi-REPL (prompt 型式) cqp
  4. 打開 Clojure 的 Quasi-REPL (window 型式) cqc

在 quickfix 視窗顯示 docstring 或是 source code

  1. 快捷鍵 K 。 對應 repl 的 (doc ...) , 也可以用 :Doc
  2. 快捷鍵 [d 。 對應 repl 的 (source ...), 也可以用 :Source

在文件裡穿梭

  1. 快捷鍵 [<C-d> 。 跳躍到符號定義的那一行,即使是定義在 jar 檔中。
  2. 快捷鍵 gf 。 語義是 go to file 。 對於 namespace 會產生作用。

重新載入程式碼

  1. 讓 REPL 重新載入現在的 namespace :Require
  2. 讓 REPL 重新載入現在的 namespace 及其使用的 namespace
    :Require!

補完提示 (Omnicomplete)
C-x C-o

results matching ""

    No results matching ""