VimとTmuxをシームレスに移動する
VimとTmuxをシームレスに利用するためのプラグイン.
今日は, tmux + vimユーザならば入れておくべきであろう vim-tmux-navigatorをご紹介させていただきます.
vim-tmux-navigator
このプラグインを入れるとシームレスにtmuxとvimを移動できるようになります 私はCtrl+hjklで, vimのバッファを移動できるように設定しているのですが
このプラグインを入れることで, 同じキーでvimのバッファだけでなく tmuxのペインも移動できるようになります.
正直かなり便利です.
Install
NeoBundleを利用しているならば
.vimrcに以下の設定を追加しましょう
NeoBundle 'christoomey/vim-tmux-navigator'
Configuration
# Smart pane switching with awareness of vim splits is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"' bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
C-hjklに限らず 自由にマップが可能です.
nnoremap <silent> {Left-mapping} :TmuxNavigateLeft<cr> nnoremap <silent> {Down-Mapping} :TmuxNavigateDown<cr> nnoremap <silent> {Up-Mapping} :TmuxNavigateUp<cr> nnoremap <silent> {Right-Mapping} :TmuxNavigateRight<cr> nnoremap <silent> {Previous-Mapping} :TmuxNavigatePrevious<cr>
Advanced Configuration For Nested tmux
僕はtmuxをローカルPC と リモートPC で それぞれ立ち上げているため, tmuxをネストして利用することが多いです.
以下のような設定を加えると ローカルのtmuxとvim, リモートのtmuxとvimの4つでシームレスに移動が可能になります!
is_vimorssh='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?|ssh)(diff)?$"' bind -n C-h if-shell "$is_vimorssh" "send-keys C-h" "select-pane -L" bind -n C-j if-shell "$is_vimorssh" "send-keys C-j" "select-pane -D" bind -n C-k if-shell "$is_vimorssh" "send-keys C-k" "select-pane -U" bind -n C-l if-shell "$is_vimorssh" "send-keys C-l" "select-pane -R" bind -n C-\ if-shell "$is_vimorssh" "send-keys C-\\" "select-pane -l"