为什么tmux在退出编辑器时会清空终端内容?

4

假设我正在运行tmux并使用"ls"在屏幕上显示一些内容。然后我进入Vim编辑一些文件。退出Vim后,tmux会擦除位于bash提示符上方的任何文本(不像clear命令,因为提示符停留在原地)。

有没有办法防止这种行为?我在OS X的Terminal.app中使用tmux 1.3。

2个回答

6

如果你的 tmux 版本支持此选项,请将以下行添加到你的 ~/.tmux.conf 文件中:

set-window-option -g alternate-screen on

阅读了手册后,我认为那似乎与正在发生的事情有关,但我尝试了那个设置,它并没有改变任何东西。 - soolwan
@soolwan:你的 $TERM 是什么?在使用 tmux 和不使用时有区别吗?tput smcup; sleep 2; tput rmcup 是否可以在 tmux 外切换屏幕并返回?在 tmux 内呢?如果在 tmux 中可以正常工作(使用我回答中的 alt-screen 设置),那么需要不同地配置 vim。在 vim 中,执行 set t_ti?(对 t_te 也一样),并将输出与 tput smcup|hexdump -C(和 rmcup)进行比较。它们应该是相似的。 - Dennis Williamson
$TERM 在 tmux 内外都是 xterm-color。"tput smcup; sleep 2; tput rmcup" 可以在 tmux 外切换屏幕,而在 tmux 内它可以切换屏幕,但返回后提示符上方的所有内容都被清除。这与编辑器的行为相同。 - soolwan
1
Dennis,在阅读了您的回复后,我查看了$TERM。在我的.bashrc文件中,我有一行“export TERM=xterm-color”。删除此行后,tmux按预期工作。感谢您的见解。 - soolwan

0

尝试将以下内容放入您的 .vimrc 文件中:

set t_ti= t_te=

那会让vim退出时不清晰。我想让vim在退出时清晰,但我希望tmux不会擦除vim会话之前的屏幕活动。 - soolwan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接