tmux & vim で <C-h>にキーバインドする

iTerm2 v3 & vimで<C-h>にマッピングできない時 - 1++の続き.

上記でやった方法では,

  • tmuxでは<C-h>がキーマップできず,
  • vimでは<C-h>がキーマップできる.

という問題が起きた.

僕はtmuxとvimをシームレスに行き来するプラグイン(vim-tmux-navigator)を使っているため,
どちらでもキーマップできることが必須になる.

そこで, tmux側で<C-h>をエスケープすることでtmuxとvimを共存させた.

一般的には以下の設定を行うとtmuxでエスケープできる.
参考サイト

// .tmux.conf
bind-key -n C-h send-keys Escape "[104;5u"

これを応用して, キーマップを行った.

is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
bind -n C-h  if-shell "$is_vim" "send-keys  Escape '[104;5u'"  "select-pane -L"