我最近更频繁地使用term-mode((term)
调用)
运行一些shell子进程,有些事情困扰着我。
问题在于其中一些进程具有文本UI,以及它们 与Emacs不断变化的窗口大小相互作用非常差。是 有没有办法为术语子进程设置固定的宽度/高度?该 实际窗口宽度不必修复,我只想要shell 子进程使用常量维度。
答案 0 :(得分:1)
您可以像这样覆盖term-window-width
的定义:
(defun term-window-width () 80)
这不会影响emacs窗口的大小,但术语进程始终认为窗口宽度为80列。您可能还想在term-mode-hook
:
(add-hook 'term-mode-hook
(lambda () (setq truncate-lines t)))
答案 1 :(得分:0)
我不完全确定,但我怀疑你要求的行为是不可能的,至少不是通用term
。你可以(至少部分地)修复Emacs窗口的维度(qv,window-size-fixed
变量),但是如果窗口出于任何原因调整大小,我知道没有任何方法可以阻止term
更新$COLUMNS
和$LINES
环境变量以反映新的窗口维度。另一方面,如果您使用的是shell
,而不是term
,那么export
和$COLUMNS
可以$LINES
shell
在整个会议期间坚持下去。如果我对您的首选配置的理解是正确的,那么您最好的选择可能是在固定大小的窗口内使用multi-term
,这样基于ncurses的应用程序将保持一个恒定的大小,而普通输出将被简单地包装或按照惯例滚动缓冲区。或者,您可以调查shell
包;我过去曾见过其他人推荐的,但我不能亲自担保。
编辑:抓住我所说的使用{{1}}的内容。自从我使用它以来已经很久了;忘记它通常不支持大多数基于ncurses的程序。遗憾。