Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 屏幕:如何打开备用屏幕?_Linux_Macos_Terminal_Gnu Screen_Iterm - Fatal编程技术网

Linux 屏幕:如何打开备用屏幕?

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中) 选中并取消选中“在应用程

在终端中工作时,我会看到最后一个shell命令执行输出的历史记录。如果我运行vim,我会看到我全屏打开的文件。当我退出vim时,我可以再次看到最后一个shell命令的历史记录

但是,当我从屏幕使用vim时。我在退出vim时看到了刚才编辑的文件的示意图,而不是上一个shell命令的历史记录不过我想看看壳牌的历史。

我如何实现这种行为?

我用过:

  • terminal.app和iterm2.app
  • 尝试将xterm切换到xterm-256color(在iterm2.app中)
  • 选中并取消选中“在应用程序状态栏存在时将行保存到回滚”和“在交替屏幕模式下将行保存到回滚”(在iterm2中)
  • 将termcapinfo xterm ti@:te@添加到.screenrc(虽然这应该是相反问题的解决方案,但为什么不试试呢)
  • sshing到linux机器并尝试在那里使用gnu屏幕
到目前为止,我没有得到想要的行为

附言

我在谷歌上搜索了一下,看到了一些试图解决相反问题的人的评论:

这种行为背后的主要思想是程序是否使用备用屏幕来保存shell历史的图片,并在vim退出时显示它。因此,如果一个人想要解决相反的问题,他应该


更新:我忘记了
屏幕的一个功能,该功能默认情况下禁用备用屏幕支持

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
对我来说很有效。