如何让“lein repl”历史在cygwin中运行?

时间:2013-03-19 02:31:41

标签: clojure cygwin leiningen

我在Windows 7上使用Cygwin和最新的lein,但是当我在repl中时,上下按下让我绕着repl控制台而不是向我显示历史记录(这是我期望的)。我已经google了一下,看到这与使用jline而不是readline(无论这意味着什么)有关,但我不知道如何使用这些信息来解决我的问题。

2 个答案:

答案 0 :(得分:5)

I found the answer here:

  

我修改了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。

答案 1 :(得分:4)

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

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

rlwrap lein repl

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

相关问题