Clojure

編輯器

Clojure 是一種互動式語言,只有使用支援程式碼評估(透過連接的 REPL)和結構編輯(將程式碼形式視為資料而非文字來操作)的編輯器,才能獲得最佳的 Clojure 體驗。很幸運地,有許多出色的 Clojure 編輯器提供這些功能和許多其他程式設計師便利功能。

請注意,以下所述的許多編輯器都處於積極開發中。此處的連結和資源可能會過時。我們歡迎問題問題

Emacs是最古老的編輯器之一,至今仍廣泛使用。由於它是一個可使用其自有 Lisp 變體進行擴充的平台,因此幾乎可以針對您可能想做的事找到選項。正如您所預期的,高度的可擴充性表示將此工具設定為您所喜好的方式本身可能就是一項工作,而且對某些人而言,Emacs 更多是一種生活方式,而非編輯器。話雖如此,對於 Clojure 開發人員而言,還是有友善的起點,您可以選擇吸收 Emacs 生態系統的速度。

需要了解的主要 Emacs 模式為

  • clojure-mode,一個 Emacs 主要模式,可為 Clojure(Script) 提供字型鎖定 (語法突顯)、縮排、導覽和重構支援

  • CIDER透過 cider-mode 擴充 Emacs,以支援 Clojure 中的互動式程式設計,而 cider-mode 是 Emacs 次要模式,可補充 clojure-mode 以提供互動式支援。

  • inf-clojure - 提供與 Clojure 子程序 (REPL) 的基本互動,其構想來自熱門的 inferior-lisp 套件

一些入門的地方

  • GNU Emacs - 下載和安裝 - 官方 GNU Emacs 頁面

  • Practicalli 指南,了解 Spacemacs,一個由社群推動的 Clojure Emacs 設定 - 包含 clojure-mode 和 CIDER

  • Prelude - 一個 Emacs 設定,適用於 Emacs 初學者,不特定於 Clojure,但包含 Clojure 支援 (clojure-mode、CIDER)

  • Aquamacs - Aquamacs 是專為 Mac 原生使用者設計的 Emacs,搭配 inf-clojure 模式時,足以用於極簡主義的 Clojure 環境

IntelliJ - 偏向 Java 的 Clojure

IntelliJ IDEA是最重要的「現代」IDE 之一,支援各種語言和工具。IntelliJ 以精密的 Java 編輯器聞名,利用靜態分析平台為大型 Java 程式碼庫提供絕佳的可探索性和重構性。IntelliJ IDEA Community Edition for JVM development 可作為免費下載

有兩個重要的外掛程式可用於啟用 IntelliJ 上的 Clojure 開發

  • Cursive - 一個功能齊全的 Clojure 開發環境

  • clojure-extras - 整合額外的功能,例如透過clj-kondo進行內嵌評估結果和程式碼檢查

如果您已經熟悉 Java 或預計使用混合 Clojure/Java 專案,那麼 Cursive 是個不錯的選擇。

VS Code - 快速演進、對初學者友善

Visual Studio Code在各種語言中快速普及,Clojure 也不例外。

用於互動式 Clojure 開發的Calva環境使用靜態和動態分析的組合,以提供廣泛的語言支援。此外,Calva 透過其入門體驗,加倍努力讓初學者容易上手,這是一個在瀏覽器中執行的零安裝版本。

Vim - 高效的文字編輯

Vim (或 vi) 也是一個歷史悠久的編輯器,以快速且有效率的文字編輯能力聞名。它已成為 vi 的事實上替代品,vi 是它所基於的原始 Unix 視覺編輯器。

它獨特且強大的 UI 足夠受歡迎,以至於上面提到的其他大多數編輯器都包含了 vi 模式,以重現 Vim 的核心 UI 功能。

Neovim 是 Vim 的一個分支。雖然它保持高度的相容性,但這兩個編輯器之間仍有一些顯著的差異。

Vim 和 Neovim 都具有高度的可擴充性,並且有大量的外掛程式可供它們使用。大多數,但並非全部,外掛程式都可以在這兩個編輯器中使用。

以下外掛程式為 Vim 和 Neovim 提供 Clojure 支援

以下外掛程式僅為 Neovim 提供 Clojure 支援

  • Conjure - 專注於互動式開發

除了 Clojure 外掛程式之外,還值得擴充 Vim 以改善 s-expressions 的編輯。以下外掛程式可用於 Vim 和 Neovim

還有許多外掛程式可以提供括號的顏色匹配。

其他

其他環境也存在,但較不活躍和/或較少使用。請參閱 工具 頁面以取得其他想法。

原始作者:Alex Miller