自分の環境
Windows -> mintty -> SSH -> tmux -> Vim
vimrc
if &term =~ 'tmux'
let &t_EI .= "\ePtmux;\e\e[<0t\e\\"
elseif &term =~ 'xterm'
let &t_EI .= "\e[<0t"
endif
mintty は要 ver. 3.0.2 以降。
過程
- tmux なしだと "ここ" に書いてある設定で行けたのに、tmux の内からだとうまくいかなかった。
- IME off の制御が tmux から mintty にうまく伝わっていないのだろうと推測。
- この制御が Control Sequence Introducer (CSI) というもので実現されていると知る。
- "ここ" にたどり着く。
その他
-
Insert mode を抜けてから IME が off になるまで少し時間差がある。この間のキーストロークが抜け落ちてしまう。どこでこのラグが発生しているのかはよく分からない。コメントに書いた通り、\ePtmux;\e
+\e\\
を追加したことによって時間がかかるようになったと思っていたが、そうではなく単に tmux の待ち時間が加わっていただけだった。 - Tera Term でも同じように設定できるはず。
- あと以下のように設定しておくと、IME on のときはカーソルが赤くなって分かりやすいのでとっても便利。
.minttyrc
IMECursorColour=255,0,0
参考 links
挿入モードを出る時にIMEをオフにする(SSH接続など端末エミュレータからVimを利用する場合)
tmux and control sequence character issue