如何不覆盖以前的终端内容
How to Not Overwrite Previous Terminal Contents
我不确定这是否是重复的,但如果是,我不知道要搜索什么,因为我不知道这种现象的名称。
基本上,每当我在某些计算机上使用 vim
和 less
时,以前的终端内容会被当前文件的缓冲区覆盖(我认为)。如果我用滚动条向后滚动,而不是当前程序的命令,我可以看到以前的终端内容,但是以前的一些行已经被当前程序覆盖了。似乎有多少行通过了缓冲区(我认为),例如 vim
,终端的前几行被覆盖了。当我退出 vim
/less
时,这些行仍然被覆盖,尽管它们出现在历史记录中并且当我按 up
进入 "back" 浏览历史记录时。
然而,在其他计算机上,会发生一些完全不同的事情。当我使用 vim
或 less
时,如果我上下滚动,我看不到终端的前几行。事实上,在大多数出现这种现象的计算机上,如果我用鼠标向后滚动,vim
和 less
向后滚动当前缓冲区中的文件,就像我按下 Ctrl-E
/ Ctrl-Y
。当我退出 vim
/less
时,我根本看不到该文件,我只看到终端之前的内容,就像我在打开文件之前所做的那样。
每当我用more
的时候,不管用什么电脑,都会出现前一种现象,不过我用的more
不多,因为我比较喜欢less
各种方式,所以我还没有测试它的极限。
我遇到前一种现象的 computers/virtual 终端似乎是较旧的计算机 and/or 具有较少功能和规格的计算机,这是有道理的,因为大多数人可能会想要后者,但它是可能更难完成,需要更多的处理能力和内存。
有以前经验的计算机是:我工作中的 2 台旧 RedHat
,可能是 2000 年末 s/early 2010 年的,我从 Windows 7
电脑 Penguinet
; Android
phones/tablets 终端 Rex IDE 我 "install the system"。在大多数 Android
终端应用程序上,我无法获得 vim
、less
,甚至 vi
,但我可以获得 more
。当我将 vagrant
与 Git Bash
一起使用时,默认 TERM
值为 msys
,终端全乱了,我遇到了大部分相同的行为,但更糟。当我把 TERM
改成 cygwin
或 xterm
时,效果更好。
(对我而言)具有更理想行为的计算机是:我最新的 Ubuntu 15.04
笔记本电脑(是的,预装了 Linux
的计算机);过去几年我在我的 Windows 8 笔记本电脑上安装的任何 Linux 虚拟机,但我只得到了最新版本,所以我不知道这种行为有多久了; Git Bash
在我的 Windows 8 笔记本电脑上。当我用鼠标滚动时,Git Bash
没有向后滚动文件,而是通过一个空的终端,但这可能是因为我的 vimrc
/lessrc
中的设置。当我在 Git Bash
中退出时,它仍然显示所有以前的行而不是文件。
大多数这些计算机都在使用 bash
,但是当我在我最新的 ubuntu
计算机上安装和使用 fish
时,我仍然遇到了较新的现象,即使我将其设置为默认 shell,我不认为 Git Bash
在技术上是 bash
,尽管它可能是。我相信 Terminal Rex
应用程序在安装到系统时使用了 bash
,但是当我用其他终端应用程序检查 SHELL
环境变量时,以及在没有安装系统的情况下使用 Terminal Rex,它报告作为 sh
.
我对为什么会出现这些行为很感兴趣,但我 更 对将其更改为更理想的行为的方法更感兴趣。 有没有办法让 vim
和 less
在支持 older/less 的计算机上的行为更像在较新的计算机上的行为? 另外,是有没有办法让 Git Bash
向后滚动文件而不是空白终端?
奖励:有没有办法让 more
在较新的计算机上表现得更像 less
?或者这只是 more
和 less
之间的区别?想一想,有没有可能在性能较差的计算机上 less
实际上是 more
?
所描述的行为是 xterm 样式 备用屏幕。有两种情况:
- 当它被使用时,当您运行全屏程序时终端切换到备用屏幕,例如vim.
- 当未使用时,终端在运行正在全屏程序时继续正常屏幕。
normal/alternate 屏幕大小相同:终端的可见部分忽略 回滚区域。您可以使用鼠标查看回滚。如果您在切换到备用屏幕时这样做,您可以看到当前(备用)屏幕旁边的回滚。切换回来后,例如,当 vim 退出时,前几行将显示在整个回滚和当前(正常)屏幕中。两者之间没有标记
normal/alternate 屏幕的某些方面最近在
中进行了讨论
Unix 上的大多数应用程序(以及 Linux 和 BSD 以及...)都注意 TERM
环境变量,它们(或诸如 ncurses) uses to retrieve information from the terminal database 的库。在原则上,可以为不同的应用程序分别设置 TERM
以引发不同的行为(需要注意的是,某些应用程序如 vim 具有内置表 "fix" 他们可能应用的终端数据库没有警告)。例如,运行ning 在 POSIX shell(或 bash 之类的东西)中,您可以将其键入 运行 vim 和 less 两个不同的终端描述:
TERM=vt100 vim foo.c
TERM=xterm less foo.c
我不确定这是否是重复的,但如果是,我不知道要搜索什么,因为我不知道这种现象的名称。
基本上,每当我在某些计算机上使用 vim
和 less
时,以前的终端内容会被当前文件的缓冲区覆盖(我认为)。如果我用滚动条向后滚动,而不是当前程序的命令,我可以看到以前的终端内容,但是以前的一些行已经被当前程序覆盖了。似乎有多少行通过了缓冲区(我认为),例如 vim
,终端的前几行被覆盖了。当我退出 vim
/less
时,这些行仍然被覆盖,尽管它们出现在历史记录中并且当我按 up
进入 "back" 浏览历史记录时。
然而,在其他计算机上,会发生一些完全不同的事情。当我使用 vim
或 less
时,如果我上下滚动,我看不到终端的前几行。事实上,在大多数出现这种现象的计算机上,如果我用鼠标向后滚动,vim
和 less
向后滚动当前缓冲区中的文件,就像我按下 Ctrl-E
/ Ctrl-Y
。当我退出 vim
/less
时,我根本看不到该文件,我只看到终端之前的内容,就像我在打开文件之前所做的那样。
每当我用more
的时候,不管用什么电脑,都会出现前一种现象,不过我用的more
不多,因为我比较喜欢less
各种方式,所以我还没有测试它的极限。
我遇到前一种现象的 computers/virtual 终端似乎是较旧的计算机 and/or 具有较少功能和规格的计算机,这是有道理的,因为大多数人可能会想要后者,但它是可能更难完成,需要更多的处理能力和内存。
有以前经验的计算机是:我工作中的 2 台旧 RedHat
,可能是 2000 年末 s/early 2010 年的,我从 Windows 7
电脑 Penguinet
; Android
phones/tablets 终端 Rex IDE 我 "install the system"。在大多数 Android
终端应用程序上,我无法获得 vim
、less
,甚至 vi
,但我可以获得 more
。当我将 vagrant
与 Git Bash
一起使用时,默认 TERM
值为 msys
,终端全乱了,我遇到了大部分相同的行为,但更糟。当我把 TERM
改成 cygwin
或 xterm
时,效果更好。
(对我而言)具有更理想行为的计算机是:我最新的 Ubuntu 15.04
笔记本电脑(是的,预装了 Linux
的计算机);过去几年我在我的 Windows 8 笔记本电脑上安装的任何 Linux 虚拟机,但我只得到了最新版本,所以我不知道这种行为有多久了; Git Bash
在我的 Windows 8 笔记本电脑上。当我用鼠标滚动时,Git Bash
没有向后滚动文件,而是通过一个空的终端,但这可能是因为我的 vimrc
/lessrc
中的设置。当我在 Git Bash
中退出时,它仍然显示所有以前的行而不是文件。
大多数这些计算机都在使用 bash
,但是当我在我最新的 ubuntu
计算机上安装和使用 fish
时,我仍然遇到了较新的现象,即使我将其设置为默认 shell,我不认为 Git Bash
在技术上是 bash
,尽管它可能是。我相信 Terminal Rex
应用程序在安装到系统时使用了 bash
,但是当我用其他终端应用程序检查 SHELL
环境变量时,以及在没有安装系统的情况下使用 Terminal Rex,它报告作为 sh
.
我对为什么会出现这些行为很感兴趣,但我 更 对将其更改为更理想的行为的方法更感兴趣。 有没有办法让 vim
和 less
在支持 older/less 的计算机上的行为更像在较新的计算机上的行为? 另外,是有没有办法让 Git Bash
向后滚动文件而不是空白终端?
奖励:有没有办法让 more
在较新的计算机上表现得更像 less
?或者这只是 more
和 less
之间的区别?想一想,有没有可能在性能较差的计算机上 less
实际上是 more
?
所描述的行为是 xterm 样式 备用屏幕。有两种情况:
- 当它被使用时,当您运行全屏程序时终端切换到备用屏幕,例如vim.
- 当未使用时,终端在运行正在全屏程序时继续正常屏幕。
normal/alternate 屏幕大小相同:终端的可见部分忽略 回滚区域。您可以使用鼠标查看回滚。如果您在切换到备用屏幕时这样做,您可以看到当前(备用)屏幕旁边的回滚。切换回来后,例如,当 vim 退出时,前几行将显示在整个回滚和当前(正常)屏幕中。两者之间没有标记
normal/alternate 屏幕的某些方面最近在
Unix 上的大多数应用程序(以及 Linux 和 BSD 以及...)都注意 TERM
环境变量,它们(或诸如 ncurses) uses to retrieve information from the terminal database 的库。在原则上,可以为不同的应用程序分别设置 TERM
以引发不同的行为(需要注意的是,某些应用程序如 vim 具有内置表 "fix" 他们可能应用的终端数据库没有警告)。例如,运行ning 在 POSIX shell(或 bash 之类的东西)中,您可以将其键入 运行 vim 和 less 两个不同的终端描述:
TERM=vt100 vim foo.c
TERM=xterm less foo.c