仅在发送前缀密钥后才显示 tmux 的状态栏?

仅在发送前缀密钥后才显示 tmux 的状态栏?

我希望仅在发送前缀密钥后才能看到状态栏。我希望在发送预期命令后该栏再次消失。

我想象它会像这样工作:

  1. C-b(发送前缀)
  2. 出现状态栏
  3. c(例如)
  4. 状态栏消失&新窗口已创建

您对如何解决这个问题有什么建议吗?谢谢你!

答案1

这很难简单地做到。

当你按下前缀时让它出现很容易,只需取消设置前缀选项并绑定一个键即可:

set -g prefix None
bind -n C-b set status on \; switchc -Tprefix

问题是在按下某个键时说服它关闭,因为没有“发生任何命令”的钩子。您可以更改其他键绑定将其关闭,因此c变为:

bind c set status off \; new-window

但对每个键都这样做会很痛苦。

或者,你可以让它在一秒钟左右后关闭,不管怎样,比如:

set -g prefix None
bind -n C-b set status on \; run -b "sleep 1; tmux set -t'#{session_id}' status off" \; switchc -Tprefix

但如果您想一个接一个地执行多个命令,这可能会很烦人。尽管您可能可以编写比这更复杂的脚本 - 也许更新用户选项中按下 Cb 的时间,并且仅在足够长的时间后才再次关闭状态。

如果您必须在按下下一个键时将其关闭,那么您要么更改所有其他键绑定,要么修改 tmux 以触发您可以使用的钩子。

答案2

我对尼古拉斯的建议做了一个小小的改变,就可以达到结果。

bind -n C-b set status on \;\
  switch-client -T prefix \;\
  run-shell -d 1 -b "while [ $(tmux display-message -p '##{client_prefix}') -eq 1 ]; do sleep 0.5; done; tmux set status off"

相关内容