Coc.nvimの拡張を環境変数経由でNeoVim起動時に自動インストールされるようにしてみた
PCの交換に伴うセットアップ作業を進める際に、前環境の設定ファイルをAirDrop経由にて取り出す、という手続きが最近の常套手段となりつつあります。他の物理デバイスを介さないのはとても気楽です。
ただ、割と大変なケースがありました。NeoVimの拡張であるcoc.nvimです。手元の環境ではNeoVim自体はdein.tomlを引っ張れば即完了で、coc.nvim本体もNeoVim初回起動時にインストールされます。が、coc.nvimの独自拡張は話が別です。
coc.nvimの拡張を大量導入していたためにインストールコマンドを打つのが億劫でしたが、一応の対応手段があったため紹介含めて書いてみることにします。
Cocインストール済み拡張の設定
coc.nvimはインストール済みの拡張を一覧として表示可能です。
:CocList extensions
各拡張の機能オンオフに使える設定です。これらをなんとかリストとしてアウトプットできないか試みましたが無理でした。が、CocList
を打っていて気が付きました。拡張のインストール先パスが同じであると。
拡張名さえ一通り取得してしまえば :CocInstall
にてまとめてつっこめますが、今回は g:coc_global_extensions
を使います。
g:coc_global_extensions経由でのインストール
coc起動時にこの変数へ指定されていた拡張のうち未導入なものをまとめてインストールしてくれます。
今回はlsで一覧を取り、それをcoc起動時に導入指定とする g:coc_global_extensions
に突っ込みます。
% ls ~/.config/coc/extensions/node_modules/ | pbcopy coc-actions coc-cspell-dicts coc-deno coc-diagnostic coc-dictionary coc-eslint coc-floaterm coc-git coc-highlight coc-java coc-jedi coc-json coc-lists coc-markdownlint coc-metals coc-pairs coc-prettier coc-snippets coc-spell-checker coc-tslint-plugin coc-tsserver coc-ultisnips coc-yaml
init.vimに指定します。
let g:coc_global_extensions = [ \'coc-actions', \'coc-cspell-dicts', \'coc-deno', \'coc-diagnostic', \'coc-dictionary', \'coc-eslint', \'coc-floaterm', \'coc-git', \'coc-highlight', \'coc-java', \'coc-jedi', \'coc-json', \'coc-lists', \'coc-markdownlint', \'coc-metals', \'coc-pairs', \'coc-prettier', \'coc-snippets', \'coc-spell-checker', \'coc-tslint-plugin', \'coc-tsserver', \'coc-ultisnips', \'coc-yaml' \]
あとはNeoVim起動時にcoc起動した場合、これらの拡張が未導入であれば個別インストールされます。
あとがき
coc.nvimの設定は基本coc-settings.jsonのみです。CocInstall
で導入した場合は別環境でも個別に同操作が必要となりますが、NeoVimの設定に g:coc_global_extensions
として入れておくことで追加操作は不要となります。
cocを使い始めた頃は存在することすら気が付かない環境設定で、環境移行で初めて気がつくような存在です。この記事にて知った場合は今のうちから設定しておくことで後々が楽かもしれません。