如何通过一键组合清除 tmux 历史记录 ( tmux clear-history
) 和 zsh ( ) ?zle clear-screen
清除屏幕的常见方法是^L
,我尝试将以下内容添加到.tmux.conf
:
bind -Troot C-l send-keys C-l\; clear-history
因此^L
清除屏幕,并清除几乎所有历史记录,除了最后一个屏幕。
接下来的事情^L
就说明了一切。
通过一键组合可以实现同样的效果吗?
bind -Troot C-l send-keys C-l\; clear-history\; send-keys C-l\; clear-history
不起作用。以下情况都不会:
bind -Troot C-l send-keys C-l C-l\; clear-history
答案1
尝试:
bind -n C-k clear-history
这将 ctrl-k 绑定到 tmux clear-history 命令。绑定后的 -n 使您不必发出 tmux 命令前缀(默认情况下为 ctrl-b)。我使用 bash,因此 ctrl-l 已经相当于在命令行中键入“clear”。通过这两个键,我得到了一个很好的 ctrl-l、ctrl-k 组合,它将所有滚动缓冲区移出屏幕(“清除”),然后删除所有历史记录(tmux“清除历史记录”命令)。
另外,发出send-keys -R
重置(清除)屏幕:
bind-key b send-keys -R \; clear-history
这会清除屏幕和回滚缓冲区。
答案2
我最终以不同的方式做了这件事zsh
:
# ~/.zshrc
clear-scrollback-and-screen () {
zle clear-screen
tmux clear-history
}
zle -N clear-scrollback-and-screen
bindkey -v '^L' clear-scrollback-and-screen
出于一个原因 - 我在 Vim 中有一个 Cl 映射,并且偶尔按一下会清除 Vim 屏幕。
但该解决方案有一个缺点,它只能在 shell 中工作。