当我在 Ubuntu 上的 xterm 中使用全屏 CLI 程序(例如 less 或 vim)然后退出它时,该程序的全屏输出不再可见。然而,当我在 FreeBSD 上执行相同操作时,全屏输出就停留在那里,位于下一个命令的行上方。有没有办法在 FreeBSD 上启用前一种行为,例如使用 Bash 选项?
答案1
FreeBSD 对“xterm”的 termcap 定义省略了备用屏幕转义序列。之前已经在这里讨论过了。您可以采取一些解决方法,例如(因为他们保留了该rxvt
条目):
#!/bin/sh
TERM=rxvt tput ti
less "$@"
TERM=rxvt tput te
这将“工作”,因为 rxvt 在这种情况下使用 xterm 转义序列。简单地设置TERM=rxvt
在您的环境中不会产生好的结果,但是这一部分很有用。
或者,您可以修改/etc/termcap
并重新编译终端数据库。作为参考,以下是删除备用屏幕的更改的链接:
修订版 200503,作者:dougb,2009 年 12 月 14 日星期一 07:18:31 UTC
变更意见
将一些示例 xterm*-clear 条目添加到 termcap 文件中,以便人们更轻松地启用该行为。
但这样做的缺点是(同样)如果您想将它传递到远程计算机(当然除了 FreeBSD),您将无法在 shell 中使用它。 Ubuntu 中不会出现这些“xterm*-clear”条目。
进一步阅读:
- cap_mkdb - 创建能力数据库(用于编译终端数据库的工具)
- GNU 屏幕:使用 -d -m 时出现奇怪的 TERMCAP(提到 FreeBSD 的变化)
答案2
要less
保留最后一页,export LESS=X
.请参阅手册页。我也喜欢e
和F
。
答案3
如果您想要一个简单的修复方法,只需将其放入 FreeBSD 上的 .bashrc 中即可:
export TERM=xterm-clear