パスワードを忘れた? アカウント作成
290084 journal

dodaの日記: mintty の Application Escape モード

日記 by doda

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 制御を正式採用してもいいのかも。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...