我在 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
键绑定,但不清楚您想在那里使用哪些键,因为该模式下没有启用“前缀”......您可能需要考虑一下那个。