vimの便利なPlugin(その14)vim tmux navigator
vim-tmux-navigatorプラグインは、vimのwindowとtmuxのpaneをシームレスに移動できるようにするものです。 普段、tmuxのwindow内にpaneをいくつか開き、vimでwindowを複数開くと、それぞれの場合によって移動コマンドキーを意識しながらwindow間を移動するのが面倒になります。 このプラグインを設定しおくことによって同じキーで楽々移動できます。 ここでは、以下の環境での使用を前提にしています。
- CentOS6.8 x86_64
- vim-7.4
Install
今回もdein.vimを前提とさせていただきます。 まだ、dein.vimを使っていない方は(その5)から。
.vimrcに以下の行を追加します。
これで「:call dein#install()」をコマンドラインモードで実行すればインストールは終了。
使い方
~/.tmux.confに以下の行を追加します。
1 2 3 4 5 6 7 |
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | grep -iqE '^[^TXZ ]+ +(\\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 -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" |
設定は以上になります。注意点として、bind-keyに -n をつけるとtmuxのPrefixキーをタイプする必要がなくなります。キーバインドが他とバッティングしないようでしたら -n を使ってみて下さい。 これでvimとtmuxの移動がシームレスにできるようになります。
C-h | 左へ移動 |
C-j | 下に移動 |
C-k | 上に移動 |
C-l | 右に移動 |
C-\ | 以前いた場所に移動 |
キーバインドがバッティングするとうまく動作しないので、tmuxのキーバインドを変更している場合はよく確認して見て下さい。 キーバインドの確認は、tmuxのコマンド :list-keys か tmux list-keys でできます。 また上記(プラグインで定義されている)以外のキーバインドを設定したい場合は、~/.vimrcに次のようにキーをマップすると良いようです。
1 2 3 4 5 6 7 |
let g:tmux_navigator_no_mappings = 1 nnoremap {Left-mapping} :TmuxNavigateLeft<cr> nnoremap {Down-Mapping} :TmuxNavigateDown<cr> nnoremap {Up-Mapping} :TmuxNavigateUp<cr> nnoremap {Right-Mapping} :TmuxNavigateRight<cr> nnoremap {Previous-Mapping} :TmuxNavigatePrevious<cr> |
但し、{}内は、置き換えたいキーバインドに変更して下さい。 設定オプションとして、vimのあるwindow(buffer)から何処へ移動するとそのbufferを自動保存してくれる機能があるようです。設定するには、~/.vimrcに以下を追加します。 1は現bufferに変更がある場合に保存、2は全てのbufferを保存。
注意点として、C-lで右に移動できるようキーを設定しましたが、このキーはスクリーンをクリアして綺麗にするコマンドでもあります。キーがバッティングしていますので、~/.tmux.confに次の行を追加して <prefix> C-lでクリアできるようにしておくと良いかもしれません。お好みで。
tmuxの概要とインストールを参考にインストールされたかたは、上記の設定だけでは、いったんvimのwindowに入ると移動できないかもしれません。vimからtmuxプログラムへのパスが見つからないのが原因のようです。(/usr/local/tmux2.3へインストールしてしまっているため)そんな場合は、パスが通るように ln -s /usr/local/tmux2.3/bin/tmux /usr/local/bin/tmux としてリンクを作成するなどしてみて下さい。
この記事へのコメントはこちら
コメントを投稿するにはログインしてください。