带缓冲区编辑器的Clojure标准REPL?

带缓冲区编辑器的Clojure标准REPL?,clojure,editor,read-eval-print-loop,jline,Clojure,Editor,Read Eval Print Loop,Jline,我不是在寻找IDE或集成的REPL。我只是想问一下,是否有人知道在REPL中有一个缓冲区编辑器是不是可以从“psql”或一些*nix shell中获得的 例如,在psql中,您只需输入“\e”,就可以得到编辑器中的最后一个命令,并在退出时执行它 这对clojure repl来说太棒了 $ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main 那么,有这样一个特点吗?在jline中,它必须在哪里实施 解决方案:

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

例如,在psql中,您只需输入“\e”,就可以得到编辑器中的最后一个命令,并在退出时执行它

这对clojure repl来说太棒了

$ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main
那么,有这样一个特点吗?在jline中,它必须在哪里实施

解决方案:

这就是诀窍

我必须先编译readline,然后再编译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\u编辑器


export-RLWRAP\u EDITOR=“vim+%L”
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书籍:

请参阅我对问题的答案和答案。要点:

  • 根本不要“安装”clojure。安装Leiningen,让它管理您拥有的clojure版本,并使类路径适合repl或其他用途
  • 如果必须手动启动clojure,请使用
    rlwrap
    或其他一些readline程序

谢谢你的提示,我的第二步就是使用leiningen的功能。我想没有它会更简单。但据我所知,leiningen会自动使用rlwrap(如果存在)。