つい最近まで、端末のVimからはneocomplcacheがきかなくなるという謎の現象に悩まされていました。
しかし、そもそも仕事ではVimを使わない上に、GVim上では問題なく作動するので「あれ? そもそもneocomplcacheってGVim限定だったっけ?」などと間の抜けたことを思っておりました。
設定とかをいじりまわしていると楽しすぎて時間を浪費してしまうので、あまりVimの設定を調べて時間使いたくなかったというのもありますがw
しかしネットを徘徊していたところ、どうやら set paste
という設定が原因だったもよう。
なぜこれを設定したのかは謎。エキスパートPythonあたりからコピペしたのかしら……
さて、問題の設定ですが、これがオンになるとVimがペーストモードに移行するみたいです。
なんのこっちゃという話ですが、つまるところ端末のVimは打ち込まれたテキストとペーストされたテキストの区別がつかないようなのです。つまり端末のVimに、インサートモードのままで改行のあるコードなどをペーストするとautoindentなどが働いてしまって大変都合が悪い。
そこでペーストモードに切り替えることでスマートなコピペライフが遅れるとのこと。
しかし、これをvimrcに書いてしまうと常時ペーストモードになってしまう。neocomplcacheは当然、ペーストに対して補完はしない。というタネだったようで。
わかってしまうとなんてあほらしい……。
ちなみにGVimでは入力とペーストを判断できる(?)ようなので、ペーストモードは自動でオフになります。だからGVimではオートインデントや補完がきいたんですね〜。
ともあれ、これで素のVimでも快適なコーディングライフを送れます。
しかしGVimがあまり好きではない僕にとって、これはこれで困るのでペーストモードのオンオフが出来る関数かなんかを設定したほうが良いのかもしれません。
一応
:set paste
とか
:a!
後にペーストすることでオートインデントの悪さは回避できるみたいですが!
参考にしたページ:
basyura's blog