在 tmux 中卡在覆盖模式

Stuck in overwrite mode in tmux

场景:我打开一个新的 tmux 会话,运行 emacs .tmux.conf

.tmux.conf的第二行是:set-option -g prefix C-a。我键入 'asd',第二行现在显示为:asdset-option -g prefix C-a。一切顺利。

我 ssh 到另一台服务器,做了一些事情,然后关闭了连接。我现在重新运行 emacs .tmux.conf,然后输入'asd'。第二行现在显示 asd-option -g prefix C-a,但如果我保存 运行 emacs .tmux.conf再次,我会看到 asdset-option -g prefix C-a

此问题会影响除第一行以外的所有行,即使我在提示符下键入命令也是如此。

采购 .bashrc,使用 respawn-pane 重置窗格,无法解决此问题。如果我创建一个新窗格或 window,问题将在新窗格或 window 中得到修复,直到我再次 运行 ssh。

发生什么事了?这显然是一个显示问题,因为对实际文件的检查表明我实际上并没有覆盖。

要解决此类问题,请输入您的 shell:

$ stty sane

这通常是一个通用的一次性修复程序,用于解决终端在奇怪的状态下关闭的问题。

要彻底解决这个问题,请检查您的 $TERM 环境变量。

在 tmux 中它应该是 TERM=screen(可能存在一些后缀)。

tmux 会自动执行此操作,但您的 TERM 环境变量可以通过 shell startup/login 脚本更改。

所以,在你的 tmux window 中输入:

$ export TERM=screen
$ emacs <...>

如果有帮助,请修改您的 shell rc 文件。