tos*_*osh 8 termcap terminal-emulator readline escape-characters terminfo
何苦?
清除回滚缓冲区在很多方面都很方便,例如,当我希望运行一些输出较长的命令,并希望快速滚动到此输出的开始时。当回滚缓冲区被清除时,我可以滚动到顶部,然后就完成了。
一些考虑:
clear根据人类的说法,有命令,
如果可能,clear 会清除您的屏幕,包括其回滚缓冲区(如果定义了扩展的“E3”功能)。
在 gnome-terminalclear中不清除回滚缓冲区。(不过,什么是“E3”功能?)
还有reset, 清除,但它做的比这多一点,而且它真的很慢(在我的系统上它需要超过一秒钟,这对人类来说是明显的延迟)。
还有echo -ne '\ec'or echo -ne '\033c',它可以完成这项工作。而且确实比 快得多reset。
问题是,什么是\ec序列,它与什么clear和reset做什么有什么不同,以及为什么没有单独的命令?
还有 readline 的C-l键序列,默认情况下绑定到clear-screen命令(我的意思是,readline 命令,而不是 shell 命令)。这是什么命令?它发出哪个转义序列?它实际上是如何工作的?它运行shell命令吗?或者是什么?同样,在 gnome-terminal 中,它似乎只是通过吐出空行直到提示出现在终端的顶行来工作。不确定其他终端模拟器。这是非常麻烦的行为。它会用大量的空白污染回滚,所以你必须向上滚动更多,更多。它就像一个黑客,而不是干净的解决方案。
另一个问题是,上述\ec序列是否有 readline 命令?我想将它绑定到,C-l因为我总是想在清除屏幕时清除回滚缓冲区。
而另一个问题是如何只需要输入这样的转义序列终端,执行所需的操作?然后不必考虑绑定C-l到另一个 readline 命令(如果存在这样的命令)。我尝试输入Esc,c但是这不起作用。
更新 这个问题主要在这里回答:https : //unix.stackexchange.com/a/375784/257159。这是一个很好的答案,几乎解释了这里提出的所有问题。
小智 11
\n clear-display (M-C-l)\n Clear the screen and, if possible, the terminal\'s scrollback buffer, then redraw the current line, leaving the\n current line at the top of the screen.\n clear-screen (C-l)\n Clear the screen, then redraw the current line, leaving the current line at the top of the screen. With an argu\xe2\x80\x90\n ment, refresh the current line without clearing the screen.\nRun Code Online (Sandbox Code Playgroud)\n所以按 Control + Alt + L
\n许多终端模拟器使用与XTerm相同的转义序列或类似的转义序列。对于 XTerm,Escc定义为“完全重置 (RIS)”。完全重置将清除回滚缓冲区似乎是合理的。
我没有成功地使用readline绑定到序列本身,但解决方法是
bind '"\C-l": "\C-a\C-kprintf\ "\\033c"\C-m"'
Run Code Online (Sandbox Code Playgroud)
这有一些注意事项。首先,它将printf命令放入 shell 历史记录中,这并不理想。第二,输入命令时不能使用;它会覆盖当前输入行。
| 归档时间: |
|
| 查看次数: |
4628 次 |
| 最近记录: |