tmux bind-key 有两个键

tmux bind-key 有两个键

~/.tmux.conf,与

 bind-key v split-window "vim"

我可以在分割窗口中启动 vim。

如何在 tmux 中使用两个键bind-key
示例:

 bind-key vG split-window "vim +$"

答案1

你不能。tmux只允许单键绑定(单独、使用bind-key -n或跟在前缀键后面)。

但是,您可以尝试将“v”绑定到以下调用command-prompt

bind-key v command-prompt "tmux-vim.bash %%"

看起来tmux-vim.bash

if [ $1 = "G" ]; then
    tmux split-window "vim +$"
fi

然后,输入 v 进入命令提示符后,只需输入“G”并按 Enter 即可。“G”将作为参数传递给tmux-vim.bash,该脚本将负责执行tmux您(最初)想要与“vG”关联的命令。

答案2

回答

只有一个正确的解决方案:

    # you can use "vim +$" as well, but I don't think that +$ prefix have any sense without the file path argument...
    bind -T multiKeyBindings G split-window "vim" 
    bind v switch-client -T multiKeyBindings

如果您希望传递自定义参数,则应使用这个:

    bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
    bind v switch-client -T multiKeyBindings

更多示例:

    # Toggle maximizing of current pane by typing PREFIX mm 
    bind -T multiKeyBindings m resize-pane -Z
    bind m switch-client -T multiKeyBindings

    # or without PREFIX
    bind -T multiKeyBindings m resize-pane -Z
    bind -n m switch-client -T multiKeyBindings

    # rename current window by typing PREFIX mr
    bind -T multiKeyBindings r command-prompt 'rename-window %%'
    bind -n m switch-client -T multiKeyBindings

值得注意的是

您应该为每个多键绑定使用唯一的按键板名称。例如:

    bind -T multiKeyBinding1 G split-window "vim"
    bind v switch-client -T multiKeyBinding1

    bind -T multiKeyBinding2 m resize-pane -Z
    bind -n m switch-client -T multiKeyBinding2

答案3

正如 @chepner 所说,你不能这样做直接地。您可以做的是绑定v以创建一个绑定,G该绑定可执行您想要的操作,然后自行解除绑定。

bind-key v bind-key -n G split-window "vim +$" \\; unbind -n G

采用这种方法时,有几点重要的事情需要注意:

  1. 这将与现有的顶级绑定相冲突(在本例中G);如果您想要将某个东西绑定到G并且将其他东西绑定到 ,vG则解除绑定步骤需要恢复原始绑定。
  2. tmux.tmux.conf如果包含的bind-key语句太长,将会导致段错误。如果这成为一个问题,您可以通过将上下文切换放在 bash 脚本中,然后绑定一个键来运行这些脚本来解决它。

有关更复杂的示例,请参阅这个要点

答案4

除了command-prompt其他答案建议的方法之外,您还可以使用不同的前缀来获得第二组映射:

     prefix key
         Set the key accepted as a prefix key.

     prefix2 key
         Set a secondary key accepted as a prefix key.

因此您可以执行以下操作:

set -g prefix C-v
bind-key G split-window "vim +$"

映射到c-v g而不是c-b vG。缺点是它将遮蔽任何默认映射,因为它也将通过 访问c-b g

相关内容