小さなvimrcを複数用意しておくと便利ですよ、というお話

本記事は Vim Advent Calendar 2019 - Qiita の18日目の記事です。

nginxの設定ファイルを編集するシチュエーションを題材にして、小さなvimrcを取り回すvimの使い方について紹介しようと思います。

さて、nginxの設定ファイルを編集した後に、 nginx -t を実行することで、設定ファイルの文法チェックが行えます。 また変更した設定ファイルをnginxプロセスに反映させるとき、 systemctl reload nginx などとします。 最近だと、dockerで動かすこともあるため、 docker exec "${container}" nginx -t であったり、 docker restart "${container}" であったりと細かいコマンドは変わるでしょうが、今回はそういうことは無視します。

ということで、通常ではnginx設定ファイルを編集するにあたり、以下のような手順で実施することになります。

  1. vim /etc/nginx/nginx.conf
  2. nginx -t
  3. systemctl reload nginx
  4. 動作確認

もし、ローカルマシンのみで網羅的な動作確認ができるような設定であれば、ローカルマシン上に自分好みの環境を用意すれば事足ります。 ですが、例えば開発用の共有環境に(nginxだけではない)フルセットの構成が用意されており、網羅的な確認作業は共有環境上で実施するようなケースが割と多いです。 共有環境では、nginxの稼動サーバにsshし、素のvimは入っているけれどvimrcやpluginでのカスタマイズはできない、などの制約があったりします。

そういうときに使うために、私は↓のようなコピペ用のコードを用意しており、一時的なvimrcを用意して vim -u tmp-vimrc とかで編集作業をします。

set nocompatible

augroup gyokuro
  autocmd!
augroup END

function! s:reload_nginx() abort
  let res = system('nginx -t')
  if v:shell_error != 0
    echo res
    return
  endif
  let res = system('systemctl reload nginx')
  if v:shell_error != 0
    echo res
    return
  endif
endfunction

autocmd gyokuro BufWritePost /etc/nginx/* call s:reload_nginx()

やっていることは単純で、nginxの設定ファイルを編集したとき、自動で nginx -t で文法チェックかけて、問題ないようなら systemctl reload nginx を実行しているだけです。 単純ではありますが、あるのとないのとでは、面倒さが結構違ってきます。

紹介したスニペットはnginxに閉じていますが、素vimに対して、ワンポイントでかつコピペ程度の手間で使える機能(スニペット)を作っておくと、取り回しが良いです。 個人的には、pluginでモリモリするよりも、色々な環境で素vim使って作業していくことを想定して、こういう工夫をしています。

人により好みはあるかと思いますが、結構便利なので、試してみてください。 そしてもっと良い方法あるよっていう方がいましたら、是非教えてください。

以上です。