Tmuxとvim側にvim-tmux-navigatorをインストールしましたが、Ctrl-[hjkl]
を使用してvimペインとtmuxウィンドウ間を移動できます
しかし:これは、readline(またはbash?)ショートカットが上書きされることを意味します。 Ctrl-k
(行末まで削除)、使用したい。
Tmuxプレフィックスを要求するようにキーを再マップしようとするすべての試み。 Ctrl-b [hjkl]
vim-tmux-navigatorが失敗しました。
誰かがこれに対する解決策を持っていますか?
注:私は例としてC-bを使用していますが、以下に適切な解決策があります。私はC-Spaceを使用していますが、少し複雑です。
はい、<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
キーバインディングも更新することをお勧めしますが、そのモードでは「プレフィックス」が有効になっていないため、どのキーを使用するかは明確ではありません...そのことを検討することをお勧めします。