【问题标题】:How can I get the "lein repl" history to work in cygwin?如何让“lein repl”历史在 cygwin 中工作?
【发布时间】:2013-03-19 02:31:41
【问题描述】:

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

【问题讨论】:

    标签: clojure cygwin leiningen


    【解决方案1】:

    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 = 历史。

    【讨论】:

      【解决方案2】:

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

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

      rlwrap lein repl
      

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

      【讨论】:

      • 非常有趣。我想我会尝试一下并报告。即使对于非 lein 问题,也很高兴知道这一点。
      • 没错。在工作中,我们已经将它与 sqlplus 一起使用了很长时间,以至于人们忘记了 sqlplus 本身并不提供此功能。
      • 我比我发现的更喜欢这个解决方案,所以我将它标记为答案。谢谢
      • @tieTYT 非常好。很高兴听到您发现它很有用。
      • @tieTYT 我没有看到这种情况发生,但我可以看到others have。不确定这与一年前的相关性有多大。
      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多