如何在终端窗口中摆脱 Emacs 的菜单栏?
标准答案是
(when (not (display-graphic-p))
(menu-bar-mode -1))
但是init.el
,这个解决方案并不好,因为它只是在事后删除了菜单栏。你仍然会在一瞬间看到它。这很烦人。
查看源代码,startup.el
我没有看到此问题的明显解决方案。我认为唯一的方法是使用before-init-hook
。也许这可以解决问题?
(add-hook 'before-init-hook
(lambda ()
(setq emacs-basic-display t)))
但是这个钩子在其他初始化文件被评估之前运行init.el
,那么应该如何使用它呢?
答案1
我发现这似乎取决于终端窗口的大小。我在terminator
和xterm
上进行了测试,在这两种情况下,增加窗口大小都会阻止菜单栏在emacs
加载时出现。想想看。具体来说,终端宽度> = 88似乎会阻止菜单缓冲区出现。高度似乎无关紧要。因此,您可以更改终端窗口的默认大小,这可能会解决您的问题。
显然,这不是一个理想的解决方案,如果您是从 tty 而不是终端仿真器运行,这也没有帮助,但这可能是您在不深入研究emacs
源代码的情况下能得到的最好的结果,我想您不会发现为摆脱这种小烦恼而付出的努力是值得的。
答案2
我怀疑是否有办法一开始就抑制它,至少抑制您提到的短暂出现。您可以尝试自定义initial-frame-alist
,但我怀疑这是否会在这里产生任何效果。我试过emacs -nw -f menu-bar-mode
,这会关闭菜单栏,但同样,它首先会短暂出现。