Clojure标准REPL与缓冲编辑器?

Ben*_*ter 6 editor clojure jline read-eval-print-loop

我不是在寻找IDE或集成的REPL.我只是想问一下是否有人知道是否有可能在REPL中有一个缓冲编辑器,如'psql'或某些*nix shell所知.

例如,在psql中输入"\ e",你将获得编辑器中的最后一个命令,并且uppon退出它将被执行.

这对于clojure repl来说非常棒.

$ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main
Run Code Online (Sandbox Code Playgroud)

那么,有这样的功能吗?在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 ----
Run Code Online (Sandbox Code Playgroud)

和出口 RLWRAP_EDITOR

export RLWRAP_EDITOR="vim +%L"

Sco*_*ott 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 "$@"
Run Code Online (Sandbox Code Playgroud)

将脚本放在路径中的任何位置即可使用.

最后,你不需要脚本,我只是为了方便起见.如果rlwrap在你的系统上并且clj在你的路径中,那么你可以简单地输入:

rlwrap clj

进一步阅读Clojure维基书:用rlwrap增强Clojure REPL


ama*_*loy 6

看看我对问题的回答一个REPL将它们绑定在一起?以及如何从Github repo在没有clojure.jar的情况下在Ubuntu 10.04上安装Clojure.要点:

  • 根本不要"安装"clojure.安装Leiningen,让它管理你拥有的clojure版本,以及获取repl或其他用法的类路径.
  • 如果您必须手动启动clojure,请使用rlwrap或其他一些readline程序.