如何将 tmux 窗口选择绑定到 f1-f12 键?

如何将 tmux 窗口选择绑定到 f1-f12 键?

目前,我使用 CB N 在 tmux 窗口之间移动,其中 N 是我想要的窗口的编号。有没有办法映射 f 键,以便我只需按 f1 即可激活第一个窗口,按 f2 即可激活第二个窗口,等等?

答案1

tmux允许命令绑定到大多数键,无论有或没有前缀键。 [...] 此外,还接受以下特殊键名称:Up、[...]F1F12、[...]。

(来源:man 1 tmux

在 shell 中运行tmux

for n in 1 2 3 4 5 6 7 8 9 10 11 12; do
   tmux bind-key -T root "F$n" select-window -t "$n"
done

要使绑定永久化,请编辑.tmux.conf并在表单中添加 12 行:

bind-key -T root F1 select-window -t 1
# up to
bind-key -T root F12 select-window -t 12

笔记:

  • tmux枚举窗口,0但没有F0键。您的要求不包括第 0 个窗口。

  • F1..生成的序列F12取决于几个因素,主要取决于终端仿真器及其设置。我可以说tmux识别^[OP^[OQ^[OR^[OS,但是然后^[[15~而不是^[OT等等;所以你需要调整你的终端设置。例如,当从 Windows 通过 PuTTY 连接到 Debian 时,我需要选择Xterm R6在腻子中设置终端键盘功能键和键盘。我注意到VT400VT100+部分工作。我不知道你是否可以以相反的方式进行调整(即调整tmux到你的终端)。

  • 有些程序将功能键用于其自身目的,您可能想让tmux它们使用。此示例片段为.tmux.confmakeF1F2work inmcvim

    # Using function keys to select windows, except in mc or vim
    tmux_commands_with_function_keys="mc vim"
    bind-key -T root F1 \
       if-shell 'echo "#{tmux_commands_with_function_keys}" | grep -q "#{pane_current_command}"' \
          'send F1' 'select-window -t 1'
    bind-key -T root F2 \
       if-shell 'echo "#{tmux_commands_with_function_keys}" | grep -q "#{pane_current_command}"' \
          'send F2' 'select-window -t 2'
    

相关内容