読者です 読者をやめる 読者になる 読者になる

endwise.vim の キーマッピング問題

Vim

endwise.vim は doに対して対応するendを補完するVimプラグインです.neocomplcacheのスニペット補完に比べてdoを押してReturnを押した次点でendが自動で補完されるので,シームレスに補完できます.Ruby,VimScript,VBあたりに対応しているようです.vim.orgか,ミラーのgithubリポジトリから落としてインストールできます.
しかし,このスクリプトは内部でキーマッピングを

    imap <CR>      <CR><Plug>DiscretionaryEnd

のようにして設定しており,自分の環境では

    inoremap <expr><CR>  pumvisible() ? neocomplcache#smart_close_popup()."\<CR>" : "\<CR>"

と衝突してしまいうまく設定できません.
をデフォルトに戻すと動きますが,neocomplcacheの補完候補がReturnで消えないのも困るので,次のように解決しました.
まず,endwise.vimから上記のimapの行を削除します.次に自動補完を行いたいFileType(自分の場合はRubyだけ)に対して,

    autocmd FileType ruby imap <buffer> <expr><CR>  pumvisible() ? 
    neocomplcache#smart_close_popup()."\<CR>\<Plug>DiscretionaryEnd" : 
    "\<CR>\<Plug>DiscretionaryEnd"

のようにのあとにDiscretionaryEndが付くように設定します.(長いので改行しています)
バッファローカルな設定であることに注意してください.
また,についてもすでに何かに割り当てている場合は同様に変更する必要があるかもしれません.

ちなみに,ソースを直接いじっているので,Vundle.vimなどでendwise.vimを管理しないようにしましょう.
まあ,ver1.0で2008年以降更新がなく,ドキュメントも無いような状態ですので,メンテナンスされることも無さそうですし,プラグイン管理する必要はあまりなさそうです.