【发布时间】:2015-10-16 05:06:01
【问题描述】:
我不确定这是否是重复的,但我不知道要搜索什么,因为我不知道这种现象的名称。
基本上,每当我在某些计算机上使用vim 和less 时,以前的终端内容都会被当前文件的缓冲区覆盖(我认为)。如果我使用滚动条而不是当前程序的命令向后滚动,我可以看到以前的终端内容,但是前面的一些行已被当前程序覆盖。似乎有多少行通过缓冲区(我认为),例如vim,是终端的先前行被覆盖了多少。当我退出 vim/less 时,这些行仍然被覆盖,尽管它们出现在历史记录中,当我按下 up 以“返回”历史记录时。
但是,在其他计算机上,会发生完全不同的情况。当我使用vim 或less 时,如果我上下滚动,我看不到终端的前几行。事实上,在大多数出现这种现象的计算机上,如果我用鼠标向后滚动,vim 和less 会向后滚动当前缓冲区中的文件,就好像我按下了Ctrl-E/Ctrl-Y。当我退出vim/less时,我根本看不到文件,我只看到终端以前的内容,就像我在打开文件之前所做的那样。
每当我使用more时,无论我用什么电脑,都会出现前一种现象,但我并没有那么频繁地使用more,因为我喜欢less在各个方面都更好,所以我没有测试了它的极限。
我遇到前一种现象的计算机/虚拟终端似乎是较旧的计算机和/或功能和规格较低的计算机,这是有道理的,因为大多数人可能想要后者,但它可能更难完成并且需要更多的处理能力和内存。
具有前一种经验的计算机是:我工作时使用的两台旧的RedHat,可能来自 2000 年代末/2010 年初,我从带有 Penguinet 的 Windows 7 计算机访问; Android 带有终端 Rex IDE 的手机/平板电脑,我在其中“安装系统”。在大多数Android 终端应用程序上,我无法获得vim、less 甚至vi,尽管我获得了more。当我将vagrant 与Git Bash 一起使用时,默认TERM 值为msys,终端都搞砸了,我经历了大部分相同的行为,但更糟。当我将TERM 更改为cygwin 或xterm 时,效果会更好。
(对我来说)具有更理想行为的计算机是:我最新的带有Ubuntu 15.04 的笔记本电脑(是的,预装了Linux 的计算机);过去几年我在 Windows 8 笔记本电脑上安装的任何 Linux VM,但我只获得了最新版本,所以我不知道这种行为有多老; 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 在较旧/功能较弱的计算机上的行为更像是在较新的计算机上的行为? 另外,有没有办法让 Git Bash 滚动通过文件而不是空白终端返回?
奖励:有没有办法让more 在较新的计算机上表现得更像less?或者这只是more 和less 之间的区别?想一想,有没有可能是能力较差的电脑上的less实际上是more?
【问题讨论】:
标签: android linux shell pagination git-bash