我不是在寻找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_EDITOR
export 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/