将命令从Tmux传递到Vim

时间:2018-07-30 21:35:29

标签: vim tmux

我正在使用Ctrl- [vim移动键]来更改Tmux中的窗格(C-j移至下面的窗格,依此类推)。通常,我会打开一个带有多个拆分的Vim窗口。有没有一种方法可以让tmux识别窗格中已打开的vim,并通过C-j传递“选择下一个分离的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

1 个答案:

答案 0 :(得分:3)

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窗格中进行的任何移动。