我正在使用 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 终端,但我已经厌倦了试图弄清楚如何连接。
不过,页面man
中terminfo
确实还有一条有用的信息。在其“预定义功能”下有一个“变量字符串”,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,这样我就可以按向上/向下翻页来滚动整个屏幕,或者按向上/向下箭头逐行滚动