在 tmux 中使用 vim,我想提出自动完成行建议(通常通过 完成C-x C-l
)。
但是,我有以下.tmux
配置,它用作C-l
窗格之间的导航键(选择右侧窗格):
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^STXZ ]+ +(\\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'
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
在 tmux 中运行C-x C-l
内部 vim 不起作用,我在 vim 中得到了一个底线-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
: .
直接运行 vim(不是从 tmux 内)可以正常工作。
我该如何改变我的方式.tmux.conf
来应对这种情况?
答案1
这似乎有效:
-grep -iqE '^[^STXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
+grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
但它完全禁用了 vim 内的导航。