【问题标题】:History in Clojure REPLClojure REPL 的历史
【发布时间】:2023-12-26 08:07:01
【问题描述】:

我正在使用 Clojure 进行我的第一步,但由于某种原因,向上/向下键不允许我像在其他语言的 REPL 中那样单步执行 REPL 中的命令历史记录。 Clojure REPL 是否使用不同的键来访问命令历史记录,或者此功能是否(尚未)实现?

【问题讨论】:

    标签: clojure read-eval-print-loop


    【解决方案1】:

    如果您有机会使用类似 Unix 的环境,您可以使用 rlwrap 来实现诸如命令行历史和 Ctrl-R 搜索之类的好东西。

    只需添加用于启动 repl 的命令,例如:

    rlwrap java -cp clojure.jar clojure.main

    【讨论】:

    • 这在 os x 上运行良好。我刚刚做了'brew install rlwrap' 并准备好了。 Lein 也很棒。
    • 上面的命令对我不起作用,但一个更简单的变体可以:rlwrap lein repl
    • @JeroenvanDijk:即使您没有安装 lein,上面的命令也可以工作,但假设您将类路径(cp 参数)设置为正确指向 clojure jar - 在这种情况下在同一目录中。如果您使用 lein(这实际上是推荐的方式),则根本不需要输入 rlwrap - 它包含在此功能中,请尝试一下 - 只需 lein repl
    • @GoranJovic 啊,你是对的,lein repl 已经可以使用了 :)
    【解决方案2】:

    或者使用 Leiningen 或 Cake。这两种方法一般都很有用,您会很乐意学习使用它们,但具体来说,它们会在可用的情况下自动使用 readline 或 jline。

    【讨论】:

    • + 2! lein repl是你的朋友
    • 'lein swank' 也是你的朋友,然后 emacs 将提供语法高亮、paredit 和其他好东西。
    【解决方案3】:

    您可以使用 JLine 增强 REPL 以执行此操作,请参阅 here

    【讨论】:

    • 我正在运行 Ubuntu,JLine 以破坏删除为代价修复历史记录?
    【解决方案4】:

    取决于您使用的 REPL。大多数优秀的 REPL 都具有此功能以及更多功能。

    例如,如果您作为 Eclipse 用户使用 Java,您可能希望使用由逆时针插件提供的嵌入式 nREPL。我发现这比配置单独的专用 Clojure 环境更容易使用。

    【讨论】:

      【解决方案5】:

      C-, M-x slime-repl-forward-input C-, M-x slime-repl-backward-input 转到下一个/上一个历史记录项。

      http://common-lisp.net/project/slime/doc/html/Input-Navigation.html

      【讨论】:

        最近更新 更多