shell – OS X终端线不进入回滚

我有一个问题,当使用Mac OS X的终端(TERM = xterm)时出现问题:有时它会进入一种状态,其中滚动顶部的行不会添加到回滚缓冲区.我没有使用屏幕或类似的;这是终端选项卡中的普通bash shell.

打开新选项卡后,它不会立即执行此操作.我相信这是我在问题标签中运行的一个副作用.我的猜测是它与xterm仿真有关,可能是滚动区域.

什么没用:

>通过Shell菜单进行软重置和硬重置
>在选项卡中运行重置

有没有可靠的方法来重置终端和/或xterm状态?

任何人都可以提供对正在发生的事情的解释,即使唯一的解决方法是关闭标签并打开一个新标签?

这意味着终端正在使用备用屏幕缓冲区.有一个主屏幕,滚动到回滚日志,另一个屏幕没有.默认情况下,“全屏”或“屏幕导向”程序(如top,less,emacs,vim和screen)将终端切换到备用屏幕.

每个屏幕都有自己的内容和状态.具有备用屏幕使程序能够接管整个显示,然后通过切换回主屏幕,在退出时恢复先前的内容.

从Mac OS X Lion 10.7开始,终端有一个菜单项,可用于手动切换屏幕:

View > Show/Hide Alternate Screen

这主要是为了在“全屏”程序退出后您可以在备用屏幕上查看或复制文本. Xterm有一个类似的命令.

例如,您还可以使用它手动强制程序使用特定屏幕来控制输出是否转到回滚日志.但是,如果您当前正在使用明确切换到备用屏幕的程序,如果在程序运行时将其强制进入主屏幕,则可能会混淆或获得意外结果,因此请谨慎使用.

根据程序的不同,它可能有一个命令行参数或一些其他方法来配置它来使用主屏幕.例如,少-X.

一些terminfo条目专门设计用于抑制使用备用屏幕,例如xterm1. TERM = xterm1 emacs将在主屏幕上运行Emacs.我不建议永久使用xterm1,因为与Lion上的默认xterm-256color相比,它会禁用许多其他有用的功能.

您还可以使用tput命令切换屏幕,以从shell或脚本内部发出转义序列. tput smcup切换到备用屏幕,tput rmcup切换回主屏幕.

要查看当前正在运行的程序,请查看“终端”窗口或选项卡标题中显示的程序名称,或查看“检查器”窗口(Shell> Show Inspector).检查器列表中的最后一个进程(通常)是使用屏幕的当前程序.这是您需要配置以使用主屏幕的那个.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...