Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Clojure開発環境での基本操作まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), rebel-readline

State of Clojure Community 2020によると、Clojure開発環境の人気上位はEmacs/Spacemacs (43.23%), IntelliJ IDEA (31.73%), VS Code (9.88%)ということで、これらのエディタ/IDEは国内のClojurianの間でもよく使われている印象があります。

そこで、今回の記事では以下4種類の開発環境で高頻度で利用すると思われる基本的な操作を簡単に整理してみます。

その他のエディタも含めた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)を選択

image.png

image.png

※ REPLバッファを右側に開いてみた例(レイアウトなどはお好みで)

IntelliJ IDEA + Cursive

  • 初回の設定: Add Configurationで Clojure REPL > Local の実行/デバッグ設定を追加する

  • 操作: Control+Shift+R

image.png

image.png

image.png

VS Code + Calva

  • 操作: Control+Option+C Control+Option+J (または Control+Alt+C Control+Alt+J)してプロジェクトタイプ(e.g. Leiningen)とプロファイル(e.g. :dev, :repl)を選択

image.png

image.png

image.png

rebel-readline

  • Leiningenでの操作: lein trampoline run -m rebel-readline.main (エイリアスが rebel なら lein rebel)

  • Clojure CLIでの操作: clojure -m rebel-readline.main (エイリアスが rebel なら clojure -A:rebel)

image.png

定義ジャンプ(またはsourceの表示)

Spacemacs + Clojure layer

  • 操作: , g g (または M-RET g g)

image.png

image.png

IntelliJ IDEA + Cursive

  • 操作: Command+B (または Control+B)

image.png

image.png

VS Code + Calva

  • 操作: F12

image.png

image.png

rebel-readline

  • 操作: Contrl+X Control+S

image.png

image.png

docの表示

Spacemacs + Clojure layer

  • 操作: , h h (または M-RET h h)

image.png

image.png

IntelliJ IDEA + Cursive

  • 操作: F1

image.png

image.png

VS Code + Calva

  • 操作: Command+K Command+I (または Control+K Control+I)

image.png

image.png

rebel-readline

  • 操作: Contrl+X Control+D

image.png

image.png

局所的なeval

Spacemacs + Clojure layer

  • 操作: , e e (または M-RET e e)

image.png

image.png

image.png

image.png

IntelliJ IDEA + Cursive

  • 初回の設定: Keymapで Plug-ins > Cursive > Send Form Before Caret to REPL にショートカットを設定する(e.g. Option+Shift+E)

  • 操作: Send Form Before Caret to REPL のショートカット

image.png

image.png

image.png

image.png

image.png

VS Code + Calva

  • 操作: Control+Option+C E (または Control+Alt+C E)

image.png

image.png

image.png

image.png

rebel-readline

  • 操作: Contrl+X Control+E

image.png

image.png

image.png

image.png

参考: rebel-readlineの設定

ClojureのデフォルトのREPLを便利にしてくれるrebel-readlineREADMEの説明に従って以下のようにプロジェクト横断でグローバルにLeiningenやClojure CLIに設定することができます(特定のプロジェクトに対してだけ組み込むことも可能です)。

Leiningen

~/.lein/profiles.clj
{:user {:dependencies [[com.bhauman/rebel-readline "0.1.4"]]
        :aliases {"rebel" ["trampoline" "run" "-m" "rebel-readline.main"]}}}

Clojure CLI

~/.clojure/deps.edn
{:aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}}
                   :main-opts ["-m" "rebel-readline.main"]}}}

Further Reading

lagenorhynque
「楽しく楽にcoolにsmartに」を理想とするprogrammer/philosopher。好きな言語はClojure, Haskell, Elixir, Python, English, français。読書、プログラミング、語学、法学、数学が大好き! イルカと海も大好き(*> ᴗ •*)ゞ
https://scrapbox.io/lagenorhynque/
opt
"INNOVATION AGENCY" を標榜するインターネット広告代理店。エンジニア組織 "Opt Techonologies" を中心にアドテクetc...に取り組んでいます。
https://opt-technologies.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away