固定宽度在Emacs term-mode中

时间:2012-06-14 15:47:20

标签: emacs term

我最近更频繁地使用term-mode((term)调用) 运行一些shell子进程,有些事情困扰着我。

问题在于其中一些进程具有文本UI,以及它们 与Emacs不断变化的窗口大小相互作用非常差。是 有没有办法为术语子进程设置固定的宽度/高度?该 实际窗口宽度不必修复,我只想要shell 子进程使用常量维度。

2 个答案:

答案 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的程序。遗憾。