2013-03-19 47 views
3

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

回答

4

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

您需要启动的应用程序作为参数传递给readline的包装,但是这可以通过使用适当的别名或功能被藏起来:

rlwrap lein repl 

使用rlwrap你的建议的好处是,它可以添加这种能力不仅仅是repl的具体情况。

+0

非常有趣。我想我会试一试并报告。即使对于非Lein问题,这也是很好的了解。 – 2013-03-20 16:19:48

+1

没错。在工作中,我们一直在使用'sqlplus'来保存很久以至于人们忘记了sqlplus本身不提供这种功能。 – 2013-03-20 17:29:16

+1

我喜欢这个解决方案比我发现的更好,所以我将其标记为答案。谢谢 – 2013-03-20 19:28:16

5

I found the answer here:

我修改了雷音启动脚本调用的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 "[email protected]" 
EXIT_CODE=$? 
stty icanon echo 

我修改了雷音脚本部分,现在=历史。