我在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所述,
- 在复制模式下添加selection_present格式(允许在有选择时执行不同操作的键绑定)。
这正是我想要的,虽然我正在运行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'