3

我在 Windows 7 和最新的 lein 上使用 Cygwin,但是当我在 repl 中时,向上和向下按会使我在 repl 控制台周围移动,而不是向我显示历史记录(这是我所期望的)。我搜索了一下,发现这与使用 jline 而不是 readline (无论这意味着什么)有关,但我不知道如何使用这些信息来解决我的问题。

4

2 回答 2

5

我在这里找到了答案:

我修改了 lein 启动脚本来调用 stty 并设置 jline.terminal,它似乎工作:

stty -icanon min 1 -echo
$LEIN_JAVA_CMD \
    -client -XX:+TieredCompilation \
    -Djline.terminal=jline.UnixTerminal \
    $LEIN_JVM_OPTS \
    -Dfile.encoding=UTF-8 \
    -Dmaven.wagon.http.ssl.easy=false \
    -Dleiningen.original.pwd="$ORIGINAL_PWD" \
    -Dleiningen.trampoline-file="$TRAMPOLINE_FILE" \
    -cp "$CLASSPATH" \
    clojure.main -m leiningen.core.main "$@"
EXIT_CODE=$?
stty icanon echo

我在 lein 脚本中修改了该部分,现在 up = history.

于 2013-03-19T02:46:03.750 回答
4

您建议的另一种方法是安装rlwrapCygwin 中可用的方法。这将为您提供任何交互式命令行应用程序的Readline功能(例如命令历史搜索和导航)。如果您使用过 bash 一段时间,您就会知道这些功能是什么。

您需要将应用程序作为参数启动到 readline 包装器,但这可以使用别名或函数适当地隐藏起来:

rlwrap lein repl

在您的建议上使用 rlwrap 的好处是,它可以将此功能添加到不仅仅是 repl 的特定情况。

于 2013-03-20T10:00:09.720 回答