REPL是Emacs的絕活,并列兩個(gè)窗口,左邊源代碼,右邊解釋器。任何動(dòng)態(tài)語言基本上都可以這么干,Python、Ruby、Lisp等。但是有個(gè)困擾我很久的問題,讓我很不爽,今天把它解決了,紀(jì)念下。
Scheme REPL界面
系統(tǒng)的Terminal輸出很多的時(shí)候,輸出就占滿了屏幕,輸入提示符到底部了。
終端輸出滿屏
這時(shí)候按一下Ctrl-L可以上卷到中部,再按一下上卷到頂部。想回看輸出歷史還可以再卷上去。
Ctrl-L 之后
Ctrl-L的效果在Emacs里是一樣的。但是在Emacs里再輸入一次(Enter之后),前面的輸出又全部滾出來了,提示符又到了底部。這就很煩人了,那我之前按的Ctrl-L算什么。谷歌出來有人說清空輸出歷史就可以了,但是清空后就不能像在Terminal里一樣回看了。一點(diǎn)都不優(yōu)雅。
這個(gè)問題大概困擾了我有一年多,一直以為是Emacs自身缺陷,自己也懶得深究,只想找個(gè)馬上見效的代碼貼過來用。后來覺得Emacs太復(fù)雜了,轉(zhuǎn)向了vim,就一直沒管了。
最近在看Scheme,又想嘗試Emacs。這一次,對(duì)Emacs了解更深入點(diǎn)了,順藤摸瓜,看Major mode和minor mode的函數(shù)和變量。終于讓我找到了這個(gè)
Shell Mode Options
看到標(biāo)紅的那句話時(shí),我的內(nèi)心是崩潰的。意思是,Emacs出現(xiàn)這種狀況不是bug,是因?yàn)镚NU那幫人認(rèn)為這樣能充分利用屏幕,展示更多有用的信息。

fuck
于是把這個(gè)變量設(shè)置成nil,一切就解決了。