我在 Windows 7 和最新的 lein 上使用 Cygwin,但是当我在 repl 中时,向上和向下按会使我在 repl 控制台周围移动,而不是向我显示历史记录(这是我所期望的)。我搜索了一下,发现这与使用 jline 而不是 readline (无论这意味着什么)有关,但我不知道如何使用这些信息来解决我的问题。
问问题
573 次
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
您建议的另一种方法是安装rlwrap
Cygwin 中可用的方法。这将为您提供任何交互式命令行应用程序的Readline功能(例如命令历史搜索和导航)。如果您使用过 bash 一段时间,您就会知道这些功能是什么。
您需要将应用程序作为参数启动到 readline 包装器,但这可以使用别名或函数适当地隐藏起来:
rlwrap lein repl
在您的建议上使用 rlwrap 的好处是,它可以将此功能添加到不仅仅是 repl 的特定情况。
于 2013-03-20T10:00:09.720 回答