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

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

如何通过一键组合清除 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 中工作。

答案3

图形用户界面的解决方案:

  • 在 gnome 上,您可以设置自定义键盘快捷键来运行自定义命令/脚本本文解释如何做

  • 在 KDE 上,您还可以设置自定义键盘快捷键来运行自定义命令/脚本本文解释如何做

外壳解决方案:

您可以使用 shell 别名和函数来实现此命令...文件下~/.zshrc

例如,将其添加到~/.zshrc并重新启动 shell:

c() {
   tmux clear-history
   clear-history
   clear
   reset
}

alias cc='clear'

然后您可以使用cor cc(作为命令)来执行您想要的操作。

相关内容