我希望仅在发送前缀密钥后才能看到状态栏。我希望在发送预期命令后该栏再次消失。
我想象它会像这样工作:
- 按
C-b
(发送前缀) - 出现状态栏
- 按
c
(例如) - 状态栏消失&新窗口已创建
您对如何解决这个问题有什么建议吗?谢谢你!
答案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"