将命令从 Tmux 传递到 Vim

nbw*_*ard 3 vim tmux

我正在使用 Ctrl-[vim 移动键] 来更改 Tmux 中的窗格(Cj 移动到下面的窗格等)。通常我会打开一个 Vim 窗口,并分成几个部分。有没有办法让 tmux 识别在窗格中打开的 vim,并通过 Cj 传递“选择下一个 vim 拆分”?也许它看起来像这样:

bind -t C-j
    if in vim
        C-W-J # move to next vim split down
    else
        select-pane -D # move to next tmux pane down
Run Code Online (Sandbox Code Playgroud)

jer*_*ile 5

is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"

bind-key -n C-h if-shell "$is_vim" "send-keys C-h"  "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j"  "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k"  "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l"  "select-pane -R"
Run Code Online (Sandbox Code Playgroud)

Chris Toomey 的 Vim-tmux-navigator 所示

显然,您需要更改发送键以匹配您在 vim 窗格中移动的任何内容。