小编典典

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

linux

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

但是,当我从屏幕上使用vim时。我在退出vim时看到的是刚刚编辑的文件的足迹,而不是最后一个shell命令的历史记录。 我想看看外壳的历史。

我该如何实现这种行为?

我用了:

  • terminal.app和iterm2.app
  • 尝试将xterm切换到xterm-256color(在iterm2.app中)
  • 选中和取消选中“在存在应用程序状态栏时将行保存到回滚”和“在备用屏幕模式下将行保存到回滚”(在iterm2中)
  • 在.screenrc中添加termcapinfo xterm ti @:te @(尽管它应该是相反问题的解决方案,但为什么不尝试)
  • sshing到Linux机器并尝试在其中使用gnu-screen

到目前为止,我还没有得到想要的行为。


阅读 422

收藏
2020-06-07

共1个答案

小编典典

更新: 我已经忘记screen了默认情况下禁用备用屏幕支持的功能。

添加altscreen on到您$HOME/.screenrc的启用它。这可能就是您要做的全部;所有关于与餐间$TERM$TERMCAP以及$TERMINFO可能是不必要的。无论如何,我将在此处保留其余答案。

我已经拥有了.screenrc这么久,以至于让我无所适从。

要在当前会话中启用此功能,请键入您的screen转义字符(Cntrl-A默认情况下),然后输入:altscreen on Enter

没有这个,screen即使在terminfo或termcap中定义了转义序列,也不会响应。


vim(和less,以及大多数其他基于curses的全屏程序)使用terminfo条目为您的终端定义的smcuprmcup字符串。(在较旧的termcap系统中,它们分别称为tite)。
smcup切换到备用屏幕,然后rmcup切换回主屏幕。

如果您的terminfo条目没有这些字符串,则程序将无法执行这些操作。

屏幕命令默认情况下将设置$TERM"screen"。显然,“屏幕” terminfo条目没有smcuprmcup

如果您想入侵terminfo条目,则可以修改现有信息,以便在“屏幕”中添加smcuprmcup。您将需要infocmp命令将terminfo转换为文本,并将tic其转换回terminfo使用的二进制形式。

一个更简单的解决方案是将$TERM环境变量设置为调用screen命令之前的环境变量。如今,几乎所有终端仿真器都基于旧的DEC
VT100,因此它们应具有足够的兼容性。

在我的系统上,例如,当我登录时,我拥有TERM=xterm; MacOS上可能还有其他内容。在一个screen会话中,默认情况下,我将具有:

 $ echo $TERM
 screen

我可以将其更改为xterm这样:

$ export TERM=xterm

(再次,用$TERM系统上的任何内容替换“ xterm” 。)

您也可以添加

term xterm

给你$HOME/.screenrc。实际上,screen有许多选项可用于调整termcap / terminfo设置。man screen并搜索“ terminfo”以获取详细信息。

2020-06-07