带有两个键的 tmux 绑定键

jua*_*blo 8 tmux

~/.tmux.conf,与

 bind-key v split-window "vim"
Run Code Online (Sandbox Code Playgroud)

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

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

 bind-key vG split-window "vim +$"
Run Code Online (Sandbox Code Playgroud)

che*_*ner 7

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

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

bind-key v command-prompt "tmux-vim.bash %%"
Run Code Online (Sandbox Code Playgroud)

哪里tmux-vim.bash看起来像

if [ $1 = "G" ]; then
    tmux split-window "vim +$"
fi
Run Code Online (Sandbox Code Playgroud)

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


dat*_*sho 6

回答

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

    # 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
Run Code Online (Sandbox Code Playgroud)

如果您希望可以传递自定义参数,则应改用此参数:

    bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
    bind v switch-client -T multiKeyBindings
Run Code Online (Sandbox Code Playgroud)

更多例子:

    # 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
Run Code Online (Sandbox Code Playgroud)

值得注意的事情

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

    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
Run Code Online (Sandbox Code Playgroud)