tmux:指示是否选择文本的变量?

tmux: variable indicating whether text is selected?

我在 Tmux 的复制模式下使用 vi 键绑定,如果有,我想 Esc 清除当前选择,如果没有则退出复制模式已选中。

bind -T copy-mode-vi Escape if-shell -F '#{selection_active_flag}' \
                                        'send-keys -X clear-selection' \
                                        'send-keys -X cancel'

我希望 Tmux 可以公开一个指示选择状态的变量(我编造了 selection_active_flag 来表达我的意图,它实际上并不存在),类似于 window_zoomed_flag(它确实存在)。

有办法实现吗?

引入了 Tmux 2.6 selection_present。如 changelog

中所述
  • Add selection_present format when in copy mode (allows key bindings that do something different if there is a selection).

这正是我要找的东西,虽然我是 运行 Tmux 2.6,但似乎我有一个过时的手册页,因为它没有提到 selection_present.

最终的工作解决方案是:

bind -T copy-mode-vi Escape if-shell -F '#{selection_present}' \
                                        'send-keys -X clear-selection' \
                                        'send-keys -X cancel'