在 Emacs 术语模式下固定宽度



我最近更频繁地使用术语模式(由(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 的程序。不好意思。

最新更新