dodaの日記: mintty の Application Escape モード
IME の制御に関連して vim の挿入モードで ESC キーを押した後の待ち時間がどうにかならないか調べていた時に、こんなのを見つけた。
使い方はこんな感じ。
これは便利そうと思い、早速パクって採用してみた。
使い方は前述のリンク先にもあるが、以下を .vimrc に追加する。
let &t_ti .= "\e[?7727h"
let &t_te .= "\e[?7727l"
noremap <special> <Esc>O[ <Esc>
noremap! <special> <Esc>O[ <Esc>
これで、挿入モードで ESC キーを押した時に即座に挿入モードから抜け、t_EI に指定したシーケンスが出力されるようになる。
制限事項としては、現在のところ Control-[ には対応していない。
Application Escape モードで Control-[ を押しても ESC だけが送出される。
これは後で対応する予定。
Control-3 は対応させてあるので、ESC キーと同じように使える。
別の問題としては、ESC 文字を入力する為に Control-V ESC を押すと、ESC O [ の 3 文字が入力されてしまう。
これは、一応
inoremap <special> <C-V><Esc>O[ <C-V><Esc>
という設定を追加する事によって対応できるのだが、Control-V と ESC の間が 1 秒以上空くと駄目だ。(timeoutlen=1000 の場合)
これ単体では便利さはそれ程ではないのだが、IME の制御と組み合わせると ESC キーを押した直後に IME が off になるので非常に便利だ。
おかげで IME の制御が実用的に使えるようになった。
まだ screen/tmux 使用時の問題が残っているけれど、これだけ便利ならば IME 制御を正式採用してもいいのかも。
mintty の Application Escape モード More ログイン