3

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

问题是其中一些进程具有文本 UI,并且它们与 Emacs 不断变化的窗口大小的交互非常糟糕。有没有办法为术语子流程设置固定的宽度/高度?实际的窗口宽度不必固定,我只希望 shell 子进程以恒定尺寸工作。

4

2 回答 2

1

term-window-width您可以像这样覆盖定义:

(defun term-window-width () 80)

这不会影响 emacs 窗口的大小,但术语进程将始终认为窗口是 80 列宽。您可能还想在您的term-mode-hook

(add-hook 'term-mode-hook
      (lambda () (setq truncate-lines t)))
于 2012-06-14T17:21:10.433 回答
0

我不完全确定,但我怀疑你要求的行为是不可能的,至少不是 generic term。您可以(至少部分)修复 Emacs 窗口的尺寸(qv,window-size-fixed变量),但如果窗口确实因任何原因调整大小,我知道没有方法可以防止term更新$COLUMNS$LINES环境变量以反映新窗口方面。另一方面,如果您要使用shell,而不是term,您可以使用export任何您想要的值$COLUMNS$LINES并且它们将在整个会话期间持续存在。如果我对您的首选配置的理解是正确的,那么您最好的选择可能是使用shell在具有固定大小的窗口内,因此基于 ncurses 的应用程序将保持恒定大小,而普通输出将像往常一样由缓冲区简单地包装或滚动。或者,您可以调查该multi-term软件包;我以前看过别人推荐的,虽然我个人不能保证。

编辑:划掉我所说的使用shell. 我已经很久没有使用它了;忘记了它通常不支持大多数基于 ncurses 的程序。对不起。

于 2012-06-14T17:13:38.673 回答