在 vim、less 等退出时清除 GNU 屏幕

在 vim、less 等退出时清除 GNU 屏幕

我对 screen 还很陌生,但根据我在互联网上找到的各种建议配置了我的 ~/.screenrc 文件。但我有一个问题,我相信这个问题可以很容易解决;我认为这是一个 termcap 设置。。?

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

例如在独立 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

答案1

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

TUI 应用程序vimless根据与之对话的终端的功能定制自己的行为。这个答案太短了,无法详细阐述术语信息vim机制,甚至程序如何喜欢和使用它的机制less。关于这方面有很多书。一个非常简短的摘要是,你的“真实”终端正在宣传终端所screen没有的功能。

另外,当然,这个问题已经在 SuperUser 上得到了详细的回答,这里这里这里

答案2

输入或++altscreen on​​~/.screenrcControla:altscreenReturn

相关内容