GNU屏幕清除vim,less等。出口

Modified on: Tue, 17 Sep 2019 20:40:02 +0800

我对屏幕很新,但已根据我在互联网上找到的各种建议配置了我的〜/ .screenrc文件。我有一个问题虽然我很确定可以很容易地解决;我认为这是一个termcap设置..?

在独立bash中使用less,vim,top或其他程序(在Mac OSX 10.6上)后,退出这些程序后,终端的缓冲区将清除,当前命令行上方的行将是我输入的上一个命令。
但是,有了屏幕,当我退出这些程序中的任何一个时,屏幕缓冲区将无法清除/刷新,我仍然会看到我在该程序中看到的内容..有道理吗?

e.g。在独立bash(没有屏幕): -

hostname:~ auser$ vim afile 
[do stuff in file, then :q to exit]

退出后我会看到: -

hostname:~ auser$ vim afile 
hostname:~ auser$

但在屏幕上: -

bash-3.2$ vim afile
[do stuff in file, then :q to exit]

退出后,我会看到整个屏幕: -

~  # [Empty lines in vim are represented by these tilda characters. ]
...
~  # [ Every line on the screen is one of these tildas ]
bash-3.2$   # [ This is the bottom line in the terminal ]

我希望这有点道理。
任何&所有人都非常感谢! TIA

作者:Alex Leach

最佳答案

答案在于您正在使用的“真实”终端和通过screen呈现给应用程序的终端的终端功能。通过screen执行终端I / O的应用程序可以看到screen类型的终端。您的“真实”终端可以是从xtermvt100的任何内容。 (使用printenv TERM或等价物来查找。)

vimless这样的TUI应用程序会根据他们发现自己正在与之交谈的终端来定制他们的行为。这个答案太短了,无法详细阐述terminfo机制的机制,甚至是vimless利用它。关于这些东西有完整的书籍。一个非常简短的例子是你的“真实”终端正在宣传screen终端没有的功能。

另外,当然,这已经在SuperUser上详细解答了,这里此处这里

作者:Community,JdeBP

相关问答

添加新评论