State of Clojure Community 2020によると、Clojure開発環境の人気上位はEmacs/Spacemacs (43.23%), IntelliJ IDEA (31.73%), VS Code (9.88%), Vim (8.87%)ということで、これらのエディタ/IDEは国内のClojurianの間でもよく使われている印象があります。
そこで、今回の記事では以下5種類の開発環境で高頻度で利用すると思われる基本的な操作を簡単に整理してみます。
- Spacemacs + Clojure layer
- IntelliJ IDEA + Cursive
- VS Code (Visual Studio Code) + Calva
- Vim + vim-iced
- rebel-readline ※ エディタではなくClojure REPLをちょっとリッチにしてくれるライブラリ
その他のエディタも含めたClojure開発関連プラグインについてはClojure/ClojureScript関連リンク集 > エディタプラグインが参考になるかもしれません。
また、rebel-readlineはエディタ/IDEによる高度なREPL関連機能が使えない状況で素のREPLを少し便利にしてくれるライブラリで、LeiningenやClojure CLIからいつでも使えるように設定しておくのがオススメです(cf. 参考: rebel-readlineの設定)。
ちなみに、私lagénorhynque (a.k.a カマイルカ)はSpacemacsユーザでClojure以外も含めてほぼすべてSpacemacsで完結させている(Scala, JavaのためにIntelliJを起動することがたまにあるくらい)ので、他のエディタ/IDEでの操作にはとても不慣れです😅
REPLの起動と接続
Spacemacs + Clojure layer
- 操作:
, '
(またはM-RET '
)してコマンド(e.g.cider-jack-in-clj
)を選択
※ REPLバッファを右側に開いてみた例(レイアウトなどはお好みで)
IntelliJ IDEA + Cursive
-
初回の設定: Add Configurationで
Clojure REPL > Local
の実行/デバッグ設定を追加する -
操作:
Control+Shift+R
VS Code + Calva
- 操作:
Control+Option+C Control+Option+J
(またはControl+Alt+C Control+Alt+J
)してプロジェクトタイプ(e.g.Leiningen
)とプロファイル(e.g.:dev
,:repl
)を選択
Vim + vim-iced
- 操作:
<Leader>"
※ 標準出力バッファを右側に開いてみた例(レイアウトなどはお好みで)
rebel-readline
-
Leiningenでの操作:
lein trampoline run -m rebel-readline.main
(エイリアスがrebel
ならlein rebel
) -
Clojure CLIでの操作:
clojure -m rebel-readline.main
(エイリアスがrebel
ならclojure -M:rebel
)
定義ジャンプ(またはsourceの表示)
Spacemacs + Clojure layer
- 操作:
, g g
(またはM-RET g g
)
IntelliJ IDEA + Cursive
- 操作:
Command+B
(またはControl+B
)
VS Code + Calva
- 操作:
F12
Vim + vim-iced
- 操作:
<C-]>
rebel-readline
- 操作:
Contrl+X Control+S
docの表示
Spacemacs + Clojure layer
- 操作:
, h h
(またはM-RET h h
)
IntelliJ IDEA + Cursive
- 操作:
F1
VS Code + Calva
- 操作:
Command+K Command+I
(またはControl+K Control+I
)
Vim + vim-iced
- 操作:
<Leader>hb
rebel-readline
- 操作:
Contrl+X Control+D
局所的なeval
Spacemacs + Clojure layer
- 操作:
, e e
(またはM-RET e e
)
IntelliJ IDEA + Cursive
-
初回の設定: Keymapで
Plug-ins > Cursive > Send Form Before Caret to REPL
にショートカットを設定する(e.g.Option+Shift+E
) -
操作:
Send Form Before Caret to REPL
のショートカット
VS Code + Calva
- 操作:
Control+Option+C E
(またはControl+Alt+C E
)
Vim + vim-iced
- 操作:
<Leader>et
rebel-readline
- 操作:
Contrl+X Control+E
参考: rebel-readlineの設定
ClojureのデフォルトのREPLを便利にしてくれるrebel-readlineはREADMEの説明に従って以下のようにプロジェクト横断でグローバルにLeiningenやClojure CLIに設定することができます(特定のプロジェクトに対してだけ組み込むことも可能です)。
Leiningen
{:user {:dependencies [[com.bhauman/rebel-readline "0.1.4"]]
:aliases {"rebel" ["trampoline" "run" "-m" "rebel-readline.main"]}}}
Clojure CLI
{:aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}}
:main-opts ["-m" "rebel-readline.main"]}}}
Further Reading
- Clojure/ClojureScript関連リンク集 - Qiita > エディタプラグイン
- Clojure開発環境でのリンターclj-kondo, Joker設定まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced) - Qiita
- Clojure開発環境でのフォーマッターcljstyle設定まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced) - Qiita
- Clojureで快適なREPL駆動開発のために"reloaded workflow"を実践しよう - Qiita