2013-03-19 74 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 

我修改了雷音腳本部分,現在=歷史。