Linux 屏幕:如何打开备用屏幕?
在终端中工作时,我会看到最后一个shell命令执行输出的历史记录。如果我运行vim,我会看到我全屏打开的文件。当我退出vim时,我可以再次看到最后一个shell命令的历史记录 但是,当我从屏幕使用vim时。我在退出vim时看到了刚才编辑的文件的示意图,而不是上一个shell命令的历史记录不过我想看看壳牌的历史。 我如何实现这种行为? 我用过:Linux 屏幕:如何打开备用屏幕?,linux,macos,terminal,gnu-screen,iterm,Linux,Macos,Terminal,Gnu Screen,Iterm,在终端中工作时,我会看到最后一个shell命令执行输出的历史记录。如果我运行vim,我会看到我全屏打开的文件。当我退出vim时,我可以再次看到最后一个shell命令的历史记录 但是,当我从屏幕使用vim时。我在退出vim时看到了刚才编辑的文件的示意图,而不是上一个shell命令的历史记录不过我想看看壳牌的历史。 我如何实现这种行为? 我用过: terminal.app和iterm2.app 尝试将xterm切换到xterm-256color(在iterm2.app中) 选中并取消选中“在应用程
- terminal.app和iterm2.app
- 尝试将xterm切换到xterm-256color(在iterm2.app中)
- 选中并取消选中“在应用程序状态栏存在时将行保存到回滚”和“在交替屏幕模式下将行保存到回滚”(在iterm2中)
- 将termcapinfo xterm ti@:te@添加到.screenrc(虽然这应该是相反问题的解决方案,但为什么不试试呢)
- sshing到linux机器并尝试在那里使用gnu屏幕
更新:我忘记了
屏幕的一个功能,该功能默认情况下禁用备用屏幕支持
将altscreen on
添加到$HOME/.screenrc
以启用它。这可能就是你要做的全部;所有与$TERM
、$TERMCAP
和$termfo
的混乱可能都是不必要的。不管怎样,我会把剩下的答案留在这里
我在自己的.screenrc
中有过这个,很久以来我就忘记了
要为当前会话启用此功能,请键入您的屏幕
转义字符(默认情况下为Cntrl-A),然后在
上键入:altscreen
如果没有此选项,屏幕
将不会响应转义序列,即使它们是在terminfo或termcap中定义的
vim
(和less
,以及大多数其他基于curses的全屏程序)使用terminfo条目为终端定义的smcup
和rmcup
字符串。(在旧的termcap系统中,这些分别称为ti
和te
)smcup
切换到备用屏幕,rmcup
切换回主屏幕
如果terminfo条目没有这些字符串,程序将无法执行此操作
默认情况下,screen命令将$TERM
设置为“screen”
。显然,“屏幕”终端输入没有smcup
和rmcup
如果您想破解terminfo条目,您可以修改“屏幕”的现有信息以添加smcup
和rmcup
。您需要使用infocmp
命令将terminfo转换为文本,并使用tic
将其转换回terminfo使用的二进制格式
一个更简单的解决方案是将$TERM
环境变量设置为调用屏幕
命令之前的值。现在几乎所有的终端仿真器都基于旧的DEC VT100,因此它们应该具有足够的兼容性
例如,在我的系统上,当我登录时,我有TERM=xterm
;可能是MacOS上的其他东西。在屏幕
会话中,默认情况下,我会:
$ echo $TERM
screen
我可以将其更改为xterm
,如下所示:
$ export TERM=xterm
(同样,用系统上的$TERM
替换“xterm”。)
您还可以添加
term xterm
到您的$HOME/.screenrc
。事实上,屏幕
有许多选项可用于调整termcap/terminfo设置<代码>人机界面
并搜索“terminfo”以获取血淋淋的详细信息。谢谢<在$HOME/.screenrc
和Ctl+A
->中,code>altscreen-on
对我来说很有效。