彩虹括號 (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 選擇功能

  1. ae 意指 an element
    dae 刪除所見的 element
  2. af 意指 a form
    daf 刪除所見的 form

增加/移除括號

  • dsf delete surrounding form 刪去包圍 form 的括號
  • cseb surround element in parentheses 新增包圍 element 的括號
  • cse[ surround element in brackets
  • cse{ 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

results matching ""

    No results matching ""