为什么我无法在终端中滚动?

为什么我无法在终端中滚动?

我正在使用 Ubuntu 16.04 Cinnamon。重新定位终端窗口(GNOME Terminal 3.18.3)后,我突然无法向上滚动终端输出。

  • Shift+在命令行上PgUp书写,而不是滚动2~
  • Ctrl++在命令行上写入Shift而不是滚动A
  • 右侧的滚动条填满窗口的整个垂直高度,表明没有什么可以滚动回去。

随着输出的增加,上述情况均未发生变化。出了什么问题?如何解决?

答案1

要重新初始化终端,只需简单操作reset即可解决此问题。如需更多信息和选项,请访问 man reset

注意:这将清除滚动缓冲区。

答案2

@James Henstridge 的回答这个 AskUbuntu 问题似乎正确地识别出错误,因为终端卡在“光标寻址”模式,不管这意味着什么。

他的第一个解决方案,命令$ tput rmcup,虽然没有太多解释,但有效。所以,我试图弄清楚。

man tput告诉我们

tput实用程序使用terminfo数据库来使终端相关的功能和信息的值可供 shell (参见 sh(1)) 使用,初始化或重置终端,或返回所请求终端类型的长名称。

terminfo也没有太多有用的记录。我能找到的最全面的资料是tldp.org 文章。显然terminfo是一个包含不同终端及其命令和功能的数据库。想必每个 Linux 安装都有一个?所以您可以使用不同的终端?

man terminfo表示其文件位于 中/etc/terminfo/*/*,但在 Ubuntu 16.04 上,我只在其中找到了 README。真正的文件位于 中/lib/terminfo/*/*;例如/lib/terminfo/l/linux,对于大多数读者来说,这可能是最相关的文件?我说不出来,因为这些文件不是人类可读的。上面链接的 tldp.org 文章指出infocmp可用于查看其源代码,但事实并非如此:

$ infocmp /lib/terminfo/l/linux
infocmp: couldn't open terminfo file /lib/terminfo/l/linux.

文章还提到了源代码文件/etc/termcap/etc/terminfo.src,但这些在 Ubuntu 16.04 中并不存在。我确实找到了一组/usr/share/vte/termcap*/包含人类可读xterm文件的目录。我猜这一切都连接到我正在使用的 Ubuntu 默认的 GNOME 终端,但我已经厌倦了试图弄清楚如何连接。

不过,页面manterminfo确实还有一条有用的信息。在其“预定义功能”下有一个“变量字符串”,exit_ca_mode其中包含“capname”(我假设为“功能名称”)rmcup和描述strings to end programs using cup。描述不是很有用,但变量名称很有用;这一定是指终端退出“光标寻址模式”的能力,而终端正处于该模式。

因此,$ tput rmcup必须使用tput访问terminfo数据库并激活当前终端的exit_ca_mode功能rmcup,这将终止光标寻址模式并使终端返回其正常滚动行为。

答案3

我在 Gnome 终端 3.28.2(在 Ubuntu 18.04 上)上遇到了同样的问题。只需使用终端(菜单项)->“重置并清除”。然后,您也可以进入菜单编辑->首选项->滚动(选项卡)并启用滚动条并设置滚动行数

答案4

我运行了“screen”命令,然后按下 control+a,然后按下 esc,这样我就可以按向上/向下翻页来滚动整个屏幕,或者按向上/向下箭头逐行滚动

相关内容