vim-tmux-navigator 使用 tmux 前缀而不是 C-

vim-tmux-navigator 使用 tmux 前缀而不是 C-

我在 tmux 和 vim 端安装了 vim-tmux-navigator,我可以使用Ctrl-[hjkl]

但是:这意味着 readline(或 bash?)快捷方式被覆盖,例如Ctrl-k(删除到行尾),我想要使用它。

我尝试重新映射键以需要 tmux 前缀(例如Ctrl-b [hjkl]vim-tmux-navigator)但都失败了。

有人有解决这个问题的方法吗?

注意:我使用 Cb 作为示例,下面有一个很好的解决方案。我一直在使用 C-Space,这让事情变得有点复杂。

答案1

是的,可以重新映射键绑定以便使用<C-b>(您的 tmux 前缀)然后[hjkl]更改窗格,并\转到上一个窗格。

请注意,您需要在 Vim 和 tmux 中都进行配置。

这是Vim 配置对于这些键绑定:

let g:tmux_navigator_no_mappings = 1

nnoremap <silent> <C-b>h :TmuxNavigateLeft<cr>
nnoremap <silent> <C-b>j :TmuxNavigateDown<cr>
nnoremap <silent> <C-b>k :TmuxNavigateUp<cr>
nnoremap <silent> <C-b>l :TmuxNavigateRight<cr>
nnoremap <silent> <C-b>\ :TmuxNavigatePrevious<cr>

将这些行添加到您的.vimrc.

在你.tmux.conf片段(不是 TPM)进行配置,然后将主绑定更改为:

bind-key h if-shell "$is_vim" "send-keys C-b h"  "select-pane -L"
bind-key j if-shell "$is_vim" "send-keys C-b j"  "select-pane -D"
bind-key k if-shell "$is_vim" "send-keys C-b k"  "select-pane -U"
bind-key l if-shell "$is_vim" "send-keys C-b l"  "select-pane -R"
bind-key \ if-shell "$is_vim" "send-keys C-b \\" "select-pane -l"

(简而言之,删除C-部分,以及-n使它们在没有前缀的情况下运行的。然后更新send-keys以发送 Vim 期望的键,这些键是相同的,带有前缀。)

您可能还想更新copy-mode-vi键绑定,但不清楚您想在那里使用哪些键,因为该模式下没有启用“前缀”......您可能需要考虑一下那个。

相关内容