某些终端应用程序(例如mosh
)在备用屏幕中使用终端,从而禁用终端仿真器的本地滚动。mosh
不允许覆盖其终端设置(据我所知),因此强制它不使用备用屏幕并(从而)保持本地滚动工作的一种简单方法是告诉它终端没有备用屏幕:
env TERM=dumb mosh <destination>
mosh
现在不再中断滚动,不幸的TERM=dumb
是也没有任何其他现代终端功能,例如在标题栏中设置应用程序名称。更有用的是TERM=linux
,但仍然没有在标题栏中设置应用程序名称。
那么,最像 xterm$TERM
且不支持备用屏幕的设置是什么?
注意:
- 我的默认TERM
值是xterm-256color
.
- 我意识到还有其他解决方法,例如使用tmux
inside mosh
,但有时我不想这样做。
- 我意识到这只给了我本地滚动缓冲区,因此如果 mosh 会话断开连接然后重新连接,它仍然会丢失输出。但有时这已经足够了。
答案1
使用终端条目(或条目中的和)的smcup
和功能来切换备用屏幕。rmcup
terminfo
ti
te
termcap
您可以复制tmux-256color
或xterm-256color
条目,对其进行编辑以使其具有不同的名称以及 和 的空值smcup
,rmcup
然后通过使用 进行编译,将更改后的版本添加回 terminfo 数据库tic
。
您至少需要修改第二行的标题/描述(紧接在注释之后#
)以及 smcup 和 rmcup 值
例如
mkdir ~/.terminfo
infocmp tmux-256color > /tmp/tmux256-noalt
vi /tmp/tmux256-noalt
tic /tmp/tmux256-noalt
然后export TERM=tmux256-noalt
(假设这就是你在 /tmp/tmux256-noalt 文件中所称的)。
如果您想将条目添加到系统的 terminfo db 而不是~/.terminfo/
,请tic
以 root 身份运行(例如使用sudo
)。
我强烈建议阅读恩诅咒、 terminfo、infocmp
、tic
和开始之前的相关主题。
顺便说一句,ncurses 的当前作者和维护者,托马斯·迪基,经常访问该网站并经常回答有关该网站的问题。只需阅读他的一些答案,您就可以学到很多东西。他很可能已经回答了这个问题的重复项,但我没有找到(尽管没有非常努力地搜索)。