我想彻底“清除” tmux 窗格。当我执行类似以下操作时
bind-key C send-keys "clear && tmux clear-history" \; send-keys "Enter"
建议 https://stackoverflow.com/questions/10543684/how-can-i-clear-scrollback-buffer-in-tmux,我能够清除回滚缓冲区并获得一个干净的屏幕。
但是当我按 Shift+PageUp 和 Shift+PageDown 时,我能够从终端仿真器本身(而不是 tmux)看到先前的输出。通常,您可以执行reset
命令来清除终端仿真器的回滚历史记录。
是否可以reset
通过 tmux 访问终端仿真器?同时清除上面的回滚?
建议的几种解决方法是:
1) 保留Urxvt.saveLines: 0
或启动Urxvt -sl 0
- 这是合乎逻辑的,因为如果您在 tmux 中,则不需要终端仿真器的回滚。
2)分离、重置并重新连接 tmux - 这看起来很麻烦。
答案1
您想要的是printf "\033c" > $client_tty
,$client_tty
tmux 客户端正在运行的 TTY 在哪里。\033c
是 ANSI 重置命令的转义序列。
您可以使用 列出所有连接的客户端及其 TTY tmux list-clients
。使用 将其限制为特定会话-t $session_name
,并使用 仅输出 TTY -F '#{client_tty}'
。因此,要重置所有连接的 tmux 客户端,您需要类似以下操作:
for client_tty in $(tmux list-clients -F '#{client_tty}'); do
printf "\033c" > $client_tty
done
您还需要tmux refresh
在所有通过此方式重置的客户端上发出操作,以将 tmux 恢复到其正常状态。