はじめに

最近、neovimのbuiltin package manager(vim.pack)が実装されました。 これまでdvpmを使っていましたが、勉強もかねて切り替えてみる事にしました。

これまでの設定

dvpmでは、~/.config/nvim/denops/config/main.tsにTypeScriptで設定していました。 APIが比較的に似ているので、各プラグインのURIを置き換えるのとそれぞれの設定をvim.apiへ置き換えて行きます。細かい設定自体はVim scriptやnvimのluaAPIとを使えていたので、愚直にやりました。プラグインの管理と各種設定を非同期に書けるのがdvpm(TypeScript)のいい点だとは思います。ただcacheの設定がうまくできなくて、起動時に少し遅れてcolorschemeが変わったり、denops#callback#registerがdvpmからはうまく設定できなかったりはありました。(これは自分がTypeScriptになれていないことも大きいと思いますが)

  1. dvpm.add → vim.pack.add()

    • versionやbranchの指定はいずれもversionで指定できます。
  2. before,after,afterfile → vim.pack.add()以降に書き換え

    • M.setup()
    • autocmd or usercmdへの書き換え
    • afterfile → require(
  3. dvpmの無効化

    • main.ts → main.ts.old
    • runtimepathの無効化 vim.opt.runtimepathのコメントアウトだけだと、エラーが出たので、追加したdvpmのディレクトリを一旦削除しています。

気になった点

  1. dependenciesがない

    これはメリット・デメリット両方ありそうです。読み込み順序を気にする程、自分はプラグインなれしていないので、シンプルに書けると思いました。

  2. 遅延読み込みがない

    モダンなプラグインマネージャーとヘビーユーザー必須な機能と思われますが数十個程度の利用しかしていない自分にとっては、特段影響がなさそうです。必要ならafterディレクトリに設定を置き直すか、ちまちまとautocmdに引っ掛けるのがいいのだろうと思います。

終わりに

仕事の合間終わりに、2日程かけてやりました。起動時間は計測してないですが、体感速度は変わらず、all lazyなdvpmからなので、ワンテンポ遅れたローディング起動時の通知がなくなったのは好ましい気がしています。無秩序な設定ファイルが多かったり、見通しをよくするためにもう少し盆栽に勤しみたいと思います。