REPL是Emacs的绝活,并列两个窗口,左边源代码,右边解释器。任何动态语言基本上都可以这么干,Python、Ruby、Lisp等。但是有个困扰我很久的问题,让我很不爽,今天把它解决了,纪念下。

系统的Terminal输出很多的时候,输出就占满了屏幕,输入提示符到底部了。
这时候按一下Ctrl-L可以上卷到中部,再按一下上卷到顶部。想回看输出历史还可以再卷上去。

Ctrl-L的效果在Emacs里是一样的。但是在Emacs里再输入一次(Enter之后),前面的输出又全部滚出来了,提示符又到了底部。这就很烦人了,那我之前按的Ctrl-L算什么。谷歌出来有人说清空输出历史就可以了,但是清空后就不能像在Terminal里一样回看了。一点都不优雅。
这个问题大概困扰了我有一年多,一直以为是Emacs自身缺陷,自己也懒得深究,只想找个马上见效的代码贴过来用。后来觉得Emacs太复杂了,转向了vim,就一直没管了。
最近在看Scheme,又想尝试Emacs。这一次,对Emacs了解更深入点了,顺藤摸瓜,看Major mode和minor mode的函数和变量。终于让我找到了这个

看到标红的那句话时,我的内心是崩溃的。意思是,Emacs出现这种状况不是bug,是因为GNU那帮人认为这样能充分利用屏幕,展示更多有用的信息。

于是把这个变量设置成nil,一切就解决了。
网友评论