6

IDE や統合 REPL を探しているわけではありません。「psql」または一部の *nix シェルからわかるように、REPL にバッファ エディタを含めることが可能かどうかを誰かが知っているかどうかを尋ねたかっただけです。

たとえば psql では、「\e」と入力するだけで、EDITOR に最後のコマンドが表示され、終了時にそれが実行されます。

これは、clojure repl にとっては素晴らしいことです。

$ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main

それで、そのような機能はありますか?jlineのどこに実装する必要がありますか?

解決:

rlwrap がそのトリックを行います。

readline ftp://ftp.gnu.org/gnu/readline/をコンパイルしてからrlwrap http://utopia.knoware.nl/~hlub/rlwrap/#rlwrapをコンパイルする必要がありました。

その後、次のショートカットを使用してエディターを起動できました。

Ctrl + ^

rlwrap -m -- java -cp clojure-1.3.0.jar clojure.main

Mac OSX で leiningen を使用するには、以下を変更する必要がありました。

lein 1.6.2
*** 226,233 ****
              rlwrap -m -q '"' echo "hi" > /dev/null 2>&1
              if [ $? -eq 0 ]; then
                  RLWRAP="$RLWRAP -r -m -q '\"'"
-             else
-                 RLWRAP="$RLWRAP -m --"
              fi
          fi
      fi
--- 226,231 ----

およびエクスポートRLWRAP_EDITOR

export RLWRAP_EDITOR="vim +%L"

4

2 に答える 2

8

rlwrap

目的を達成する方法はいくつかありますが、必要なことはrlwrapバイナリが行います。また、過去に Mac OS X で jline のバージョン管理の問題が発生したため、使用をやめました。

ターミナルで「clj」と入力すると、次の bash スクリプトを介して rlwrap でラップされた REPL が実際に実行され/usr/local/bin/cljます。

#!/bin/sh
# Runs clojure.
# With no arguments, runs Clojure's REPL.

CLOJURE=$CLASSPATH:/usr/local/clojure/1.3.0/clojure-1.3.0.jar

rlwrap java -cp $CLOJURE clojure.main "$@"

スクリプトをパスの任意の場所に配置して使用します。

最後に、スクリプトは必要ありません。便利なだけです。rlwrap がシステムにあり、clj がパスにある場合は、次のように入力するだけです。

rlwrap clj

Clojure wiki book からさらに読む: Enhancing Clojure REPL with rlwrap

于 2012-01-11T23:22:46.143 に答える
6

質問に対する私の回答を参照してください1 つの REPL でそれらすべてをバインドしますか? およびclojure.jar なしで Github リポジトリから Ubuntu 10.04 に Clojure をインストールする方法。主なポイント:

  • clojure を「インストール」しないでください。Leiningen をインストールして、使用している clojure のバージョンを管理し、repl やその他の使用に適したクラスパスを取得します。
  • 手動で clojure を起動する必要がある場合は、rlwrapまたは他の readline プログラムを使用してください。
于 2012-01-11T23:36:50.640 に答える