彩虹括號 (rainbow parentheses)
clojure 搭配 vim 的開發環境設置中,有一項特別的 syntax highlight ,算是其它語言比較不需要,但是 lisp 家族的語言特別需要的特色:彩虹括號 (rainbow parentheses)
我後來覺得太多色彩,似乎顏色也太亂了。自己用比較習慣的反而是色彩只有7種的 vim-niji
cd ~/.vim/bundle
git clone https://github.com/vim-scripts/vim-niji.git
語法高亮度 (syntax high light)
cd ~/.vim/bundle
git clone https://github.com/guns/vim-clojure-static.git
自動排版 (auto formatting)
要人工處理程式碼的對齊和排版是很心煩的事。寫 golang 用過 gofmt 之後,寫新的語言也會不自覺開始找對應的東西。所幸, clojure 也有 cljfmt 。
安裝方式
需要先安裝好 vim-fireplace
,才能直從在 vim 內使用。
在 ~/.lein/profiles.clj
寫入
:dependencies [[cljfmt "0.5.6"]]
安裝 vim-cljfmt
cd ~/.vim/bundle
git clone https://github.com/venantius/vim-cljfmt.git
使用方式
想要在 vim 內打 :Cljfmt
就可以自動排版。
括號操作 (s-expression manipulation)
一開始不知道可以直接操作括號時,寫 lisp 語言還常為了括號的對齊而頭痛。用了直接操作括號的 plugin 也再也沒有這種困擾。
安裝方式
cd ~/.vim/bundle
# vim-sexp will maintain the balanced state of matched character
git clone git://github.com/tpope/vim-sexp-mappings-for-regular-people.git
git clone git://github.com/guns/vim-sexp.git
git clone git://github.com/tpope/vim-repeat.git
git clone git://github.com/tpope/vim-surround.git
Text object 選擇功能
ae
意指 an elementdae
刪除所見的 elementaf
意指 a formdaf
刪除所見的 form
增加/移除括號
dsf
delete surrounding form 刪去包圍 form 的括號cseb
surround element in parentheses 新增包圍 element 的括號cse[
surround element in bracketscse{
surround element in braces
move element inside a form
>e
在同一階層的 s-expression 裡右移 element執行範例:
(1 2 3) => (1 3 2)
slurp
>)
讓 s-expression 吃掉右邊外面的 element執行範例:
(1 2 3) 4 => (1 2 3 4)
barf
<)
讓 s-expression 吐出右邊外面的 element執行範例:
(1 2 3 4) => (1 2 3) 4