Vim のウィンドウを表示せずに vim-plug で管理しているプラグインをアップデートする

Vim のプラグインを vim-plug を使用して管理しています。 cron やスクリプトでプラグインのアップデートを自動化したい時に、Vim のウィンドウが表示されると都合が悪いことがあります。

ウィンドウを表示せずに Vim のコマンドを実行する方法としては、単純に /dev/null にリダイレクトすれば OK です。

vim +PlugUpgrade +PlugUpdate +PlugClean! +qall > /dev/null

上記のコマンドでは以下の処理を行なっています。

  • vim-plug 自体のアップデート
  • 管理しているプラグインのアップデート
  • 管理対象外になったプラグインの削除
  • Vim を終了

Vim: Warning: Output is not to a terminal という警告が出ますが問題ありません。 コマンドラインから引数を与えられるものであれば vim-plug 以外のプラグインマネージャーでも使えます。

注意点としては Vim でエラーが発生すると先に進めなくなります。 例えば、vim-plug 以外のプラグインが存在しない時に上記のコマンドを実行すると、colorscheme が入っておらずエラーになることがあります。

Error detected while processing /Users/chocoby/.vimrc:
line   29:
E185: Cannot find color scheme 'jellybeans'
Press ENTER or type command to continue

自動化したいので Enter キーを押すわけにも行きません。 そこで try-catch 文を使い、今回のように colorscheme がない場合は、最初から Vim に入っているものを使用するようにしました。

try
  colorscheme jellybeans
catch /^Vim\%((\a\+)\)\=:E185/
  colorscheme desert
endtry

© 2023 暇人じゃない. All rights reserved.