我不是在寻找IDE或集成的REPL。我只是想问问是否有人可以从'psql'或某些* nix shell中知道是否可以在REPL中有一个缓冲区编辑器。

例如,在psql中,您只需输入“\e”,您将在EDITOR中获得最后一个命令,然后执行uppon exit即可。

这对于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_EDITORexport RLWRAP_EDITOR="vim +%L"

最佳答案

rlwrap

有多种方法可以实现所需的功能,但是 rlwrap 二进制文件可以满足您的需要。我过去在Mac OS X上也遇到过jline的版本控制问题,因此停止使用它。

当我在终端中键入'clj'时,它实际上通过/usr/local/bin/clj中的以下bash脚本执行用rlwrap包装的REPL:

#!/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书中进一步阅读:Enhancing Clojure REPL with rlwrap

关于clojure - Clojure标准REPL与缓冲区编辑器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8827798/

10-15 03:04