なっく日報

技術やら生活やらのメモ

Vimでインサートモードからノーマルモードに戻るのに微妙な間が空いてイラッとする

現象

インサートモードからノーマルモードに戻るのに1秒くらい待たされてイラッとする

結論

犯人は最近入れた https://github.com/Townk/vim-autoclose だったよう。

neocompleteとかの相性が悪いようです。

neocomplete#close.popup() bind key · Issue #347 · Shougo/neocomplete.vim · GitHub

調査内容

まず、.vimrcのプラグインコメントアウトしたりして症状を見ると、vim-airlineが遅いと判明。

vim-airlineのリポジトリにて、issueやドキュメントを漁ったところ、ありました!

https://github.com/bling/vim-airline/wiki/FAQ#there-is-a-pause-when-leaving-insert-mode

There is a pause when leaving insert mode

の解決策は

You need to set timeoutlen to a low number; 50 is recommended.

でした。

そこで

set timeout timeoutlen=50

を.vimrcに追記したところ、解決!

と思いきやまだ変。

しゃーなく、timeoutlenとかでググったページで

VimでESCの反応を素早くする,再び ~timeoutlenとttimeoutlen~ | PCと遊ぶ日々の記録

で、ttimeoutlenなる設定があると知り

set timeout timeoutlen=1000 ttimeoutlen=50

にしたら若干良くなりましたが、neocompleteの挙動が変。

ESC押してもノーマルモードに戻れない。

そこで、neocompleteのissueを探したところ、該当するissueを発見した訳です。

学び

変な挙動になるのは、大抵、直近で加えた変更が原因。

.vimrcとかもコマ目にコミットして履歴を残すのが大事。