Panda Noir

JavaScript の限界を究めるブログでした。最近は幅広めに書いてます。

Neovimにでなぜか入力した文字がおかしくなった

Neovimを起動直後に「あいうえお」と入力すると「いうえおあ」になる、という問題に直面しました。このときの解決法をご紹介します

f:id:panda_noir:20180113140644p:plain

状況

  1. Neovimを起動する
  2. インサートモードに入る
  3. 「あいうえお」と入力
  4. 先頭の文字が末尾に移動して入力される

しかも二回目以降は普通に「あいうえお」と入力できる、という謎の現象でした。

解決策

deinlazy.tomlの記述がまずかったようです。

[[plugins]]
repo = 'Shougo/neosnippet.vim'
on_ft = 'snippet'
on_event = 'InsertCharPre'
depends = ['neosnippet-snippets']

on_eventをInsertEnterにしたら直りました。

[[plugins]]
repo = 'Shougo/neosnippet.vim'
on_ft = 'snippet'
# on_event = 'InsertCharPre'
on_event = 'InsertEnter'
depends = ['neosnippet-snippets']

なぜ直ったのか

内部の動作まではわかりませんが、おそらく

  1. InsertCharPreは入力が確定する直前に読み込む設定
  2. InsertEnterはインサートモードに入ったときに読み込む設定

ここらへんがポイントだったのではないでしょうか。二回目以降の入力では普通に入力できたのも「プラグインが読み込まれたから」だと考えれば合点がいきいます。