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