vim-jp/issues — Issue #97: 補完時のregister-.の挙動の改善
Author: Shougo
Created: 2011-11-29 07:28:12+00:00
State: open

neocomplcacheを使っていると、register-.の値がおかしくなるので調べていたんですが、原因が分かりました。

register-.がおかしくなる条件は、「neocomplcacheで単語の一部を補完すること」です。

例えば、hogeのhoの部分からhogeraを補完したとします。
このとき、register-.にはgeraが入って欲しいのですが、hogeraが入ってしまいます。
これはなぜそうなるかというと、補完位置がhogeの前となるからです。
|hoge（|はカーソル）の位置で補完されるので、Vimからは「hogeraが入力された」と錯覚するのでしょう。

ちなみに、これはneocomplcacheでのみ発生する話ではありません。
オムニ補完やユーザー定義補完でも同様に発生します。
neocomplcacheの場合、毎回補完が発生するのでその現象に気付きやすいというだけです。

neocomplcacheで対処しようと思いましたが、register-.は読みとり専用であり、
今のところVim scriptから補完候補が選択されたということを知る術もないため対処が困難でした。

ちなみに、Vim組み込みの補完では問題ありません。
まぁ、こちらは絶対にカーソルにマッチする候補しか出てこないので当然ですが……。