CocCommandをワンラインでやってみた

Coc.nvimの更新操作経由で知ったコマンド引数を使って、Coc.nvimのお手軽操作をワンラインで色々と試してみました。
2022.02.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

blog 2022-02-09-140000 vim起動時に、編集するファイル名に加えてコマンドを渡すと以下の順で処理されます。

  1. ファイルが読み込まれる
  2. autocommandとmodelineが適用される
  3. 引数のコマンドが実行される

引数にコマンドを渡す習慣がなかったこともあり、「渡せたんだ」という感想でした。これを知ったキッカケはCoc拡張の更新手順です。ファイルの編集画面を経由せずに実行できるのは手軽です。更新手順含めて色々ためしてみました。

vimを開かず1コマンドで更新してみる

手続きは以下の通り。

vim -c 'CocUpdateSync|q'

via: Update extensions

導入済みの拡張が多い場合、処理時間が長くなる上にいつ終わるのかわかりません。おすすめは末尾の q を外すことです。

vim -c 'CocUpdateSync'

以下のように表示されます。

coc-settingsの即編集

案外ファイルパスを忘れがちです。空でvimを開くステップも正直飛ばしたいこともあるので、以下のコマンドでやってみましょう。

vim -c "CocConfig"

即coc-settings.jsonの編集に移れます。zshrc等にaliasとして追加しておくとよいかもしれません。

注意点

万能に見えますが、正常に動作しないケースもあります。例えば以下。

vim filename.md -c 'CocCommand markdown-preview-enhanced.openPreview'

編集してもプレビューに反映されません。CocOpenLog を実行するとわかるのですが、まだコマンドを受け付けるタイミングではありません。

WARN (pid:28887) [attach] - Plugin not ready when received "runCommand" [ 'markdown-preview-enhanced.openPreview' ]

sleep を挟んだとしても残念ながら期待した動作にはなりません。

vim filename.md -c 'sleep 100m | CocCommand markdown-preview-enhanced.openPreview'

あとがき

Cocを使う上での簡単なtipsとしてみました。毎回空の編集画面を挟む必要がなくなるのは地味に便利です。