将命令从 Tmux 传递到 Vim

Pass commands from Tmux to Vim

我正在使用 Ctrl-[vim 移动键] 在 Tmux 中更改面板(C-j 移动到下面的面板,等等)。通常我有一个 Vim window 打开几个拆分。有没有办法让 tmux 识别 vim 在窗格中打开,并用 C-j 传递 "select the next vim split down"?也许它看起来像这样:

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
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"

Chris Toomey's Vim-tmux-navigator

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