【问题标题】:Clojure standard REPL with buffer editor?带有缓冲区编辑器的 Clojure 标准 REPL?
【发布时间】:2012-01-11 22:41:54
【问题描述】:

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

例如,在 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"

【问题讨论】:

    标签: clojure editor read-eval-print-loop jline


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      查看我对问题One REPL to bind them all?How to install Clojure on Ubuntu 10.04 from Github repo with no clojure.jar 的回答。要点:

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

      【讨论】:

      • 感谢您的提示,获得 leiningen 的功能将是我的第二步。认为没有它会更简单。但据我所知,leiningen 会自动使用 rlwrap(如果存在)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多