我(term)
最近更频繁地使用 term-mode(由 调用)来运行一些 shell 子进程,但有些事情让我很困扰。
问题是其中一些进程具有文本 UI,并且它们与 Emacs 不断变化的窗口大小的交互非常糟糕。有没有办法为术语子流程设置固定的宽度/高度?实际的窗口宽度不必固定,我只希望 shell 子进程以恒定尺寸工作。
term-window-width
您可以像这样覆盖定义:
(defun term-window-width () 80)
这不会影响 emacs 窗口的大小,但术语进程将始终认为窗口是 80 列宽。您可能还想在您的term-mode-hook
:
(add-hook 'term-mode-hook
(lambda () (setq truncate-lines t)))
我不完全确定,但我怀疑你要求的行为是不可能的,至少不是 generic term
。您可以(至少部分)修复 Emacs 窗口的尺寸(qv,window-size-fixed
变量),但如果窗口确实因任何原因调整大小,我知道没有方法可以防止term
更新$COLUMNS
和$LINES
环境变量以反映新窗口方面。另一方面,如果您要使用shell
,而不是term
,您可以使用export
任何您想要的值$COLUMNS
,$LINES
并且它们将在整个会话期间持续存在。如果我对您的首选配置的理解是正确的,那么您最好的选择可能是使用shell
在具有固定大小的窗口内,因此基于 ncurses 的应用程序将保持恒定大小,而普通输出将像往常一样由缓冲区简单地包装或滚动。或者,您可以调查该multi-term
软件包;我以前看过别人推荐的,虽然我个人不能保证。
编辑:划掉我所说的使用shell
. 我已经很久没有使用它了;忘记了它通常不支持大多数基于 ncurses 的程序。对不起。