【发布时间】:2023-12-26 08:07:01
【问题描述】:
我正在使用 Clojure 进行我的第一步,但由于某种原因,向上/向下键不允许我像在其他语言的 REPL 中那样单步执行 REPL 中的命令历史记录。 Clojure REPL 是否使用不同的键来访问命令历史记录,或者此功能是否(尚未)实现?
【问题讨论】:
标签: clojure read-eval-print-loop
我正在使用 Clojure 进行我的第一步,但由于某种原因,向上/向下键不允许我像在其他语言的 REPL 中那样单步执行 REPL 中的命令历史记录。 Clojure REPL 是否使用不同的键来访问命令历史记录,或者此功能是否(尚未)实现?
【问题讨论】:
标签: clojure read-eval-print-loop
如果您有机会使用类似 Unix 的环境,您可以使用 rlwrap 来实现诸如命令行历史和 Ctrl-R 搜索之类的好东西。
只需添加用于启动 repl 的命令,例如:
rlwrap java -cp clojure.jar clojure.main
【讨论】:
cp 参数)设置为正确指向 clojure jar - 在这种情况下在同一目录中。如果您使用 lein(这实际上是推荐的方式),则根本不需要输入 rlwrap - 它包含在此功能中,请尝试一下 - 只需 lein repl。
lein repl 已经可以使用了 :)
或者使用 Leiningen 或 Cake。这两种方法一般都很有用,您会很乐意学习使用它们,但具体来说,它们会在可用的情况下自动使用 readline 或 jline。
【讨论】:
lein repl是你的朋友
您可以使用 JLine 增强 REPL 以执行此操作,请参阅 here。
【讨论】:
取决于您使用的 REPL。大多数优秀的 REPL 都具有此功能以及更多功能。
例如,如果您作为 Eclipse 用户使用 Java,您可能希望使用由逆时针插件提供的嵌入式 nREPL。我发现这比配置单独的专用 Clojure 环境更容易使用。
【讨论】:
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
【讨论】: