如何一键清除 tmux 和 zsh 历史记录?

phi*_*kov 3 zsh tmux

如何使用一个组合键清除 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)

Bar*_*art 8

尝试:

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)

这会清除屏幕和回滚缓冲区。

  • 非常有效,非常感谢。我最终得到了 `bind-key -n Cl send-keys -R ^M \; 清除历史`。添加`^M`发送回车以便出现提示。从文档中:“bind-key”:“-n 是 -T root”的别名,“send-keys”:“-R 标志导致终端状态被重置”。 (4认同)

phi*_*kov 5

我最终以不同的方式这样做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。