我正在使用 Ubuntu 16.04 肉桂。重新定位终端窗口(GNOME 终端 3.18.3)后,我突然无法向上滚动终端输出。
2~而不是滚动A而不是滚动随着更多输出的加入,以上都没有改变。出了什么问题,我该如何解决?
Bor*_*itz 11
@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.
Run Code Online (Sandbox Code Playgroud)
文章还提到了源代码文件/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,这会终止光标寻址模式并使终端返回到正常的滚动行为。
| 归档时间: |
|
| 查看次数: |
23902 次 |
| 最近记录: |