如何使用一个组合键清除 tmux 历史记录 ( tmux clear-history) 和 zsh ( zle clear-screen)?
清除屏幕的常用方法是^L,我尝试将以下内容添加到.tmux.conf:
bind -Troot C-l send-keys C-l\; clear-history
Run Code Online (Sandbox Code Playgroud)
所以^L清除屏幕,清除几乎所有历史记录,除了最后一个屏幕。
随后^L清除了这一切。
可以通过一个组合键来实现吗?
bind -Troot C-l send-keys C-l\; clear-history\; send-keys C-l\; clear-history
Run Code Online (Sandbox Code Playgroud)
不起作用。以下都不会:
bind -Troot C-l send-keys C-l C-l\; clear-history
Run Code Online (Sandbox Code Playgroud)
尝试:
bind -n C-k clear-history
Run Code Online (Sandbox Code Playgroud)
这将 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
Run Code Online (Sandbox Code Playgroud)
这会清除屏幕和回滚缓冲区。
我最终以不同的方式这样做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
Run Code Online (Sandbox Code Playgroud)
出于一个原因——我在 Vim 中有一个 Cl 映射,偶尔按下会清除 Vim 屏幕。
但是,该解决方案有一个缺点,它仅适用于 shell。