2013-11-21 402 views

回答

14

在我的系統(GNU/Linux,GHC 7.6.3)中,GHCi是針對haskeline庫構建的。據this document,它可以通過編輯~/.haskeline文件進行定製:

maxhistorysize: Just 1000

+0

謝謝!這對我有效。奇怪的是,我無法自動測試,例如'{seq 1 200 | xargs -n1; echo':quit'} |不管'maxhistorysize'設置如何,ghci'根本不保存任何歷史記錄,並將現有的歷史文件截斷爲100行。但是,打開ghci並混合鍵盤一段時間,證實歷史文件已超過100行:D – ntc2

+2

IIUC,haskeline [自動關閉](http://hackage.haskell.org/package/haskeline-0.7 .1.1/src/System/Console/Haskeline/InputT.hs)當'stdin'是一個管道。 –

+0

有趣。文件中的preferTerm變量的文檔表明,即使從管道讀取,也可以配置GHCi以保存歷史記錄。當然,除了愚蠢的測試之外,我沒有任何用處:P – ntc2

4

如上所述,這是Mac OSX的解決方案,另一個答案是Linux。我發現你在尋找的東西here基本上是複製粘貼相關信息並在下面格式化它。

默認值爲100個命令的歷史記錄,但你可以通過添加此行更改您~/.ghc/ghci.conf:

System.Console.Editline.Readline.stifleHistory 1000

這會增加你的歷史,以1000級的命令。

+0

這並不在我的系統上工作,我覺得是因爲我GHCI使用'readline'和你的絕招是'editline'。沒有安裝「System.Console.Editline.Readline」模塊,並且嘗試使用'cabal install editline'安裝它,會出現編譯錯誤,因爲未安裝editline。用'sudo aptitude install libeditline-dev'來安裝editline lib並沒有幫助。 – ntc2

+0

有一個[Haskell Readline lib](http://hackage.haskell.org/package/readline-1.0.3.0/docs/System-Console-Readline.html),但我找不到「已保存的數量歷史「命令。 – ntc2

+0

@ ntc2有趣!現在我們知道了mac解決方案和linux解決方案! – pyCthon