Vimで読み取り専用だったときにカラースキーマを変える

こんにちは、河野です。
これは、 TECHSCORE Advent Calendar 2016 TECHSCORE BLOG の5日目の記事です。

私は普段はVimを使用してコーディングしたり、この記事も書いたりしています。
たまに、ファイルを二重に開いた時や、/etc配下の権限がないファイルを開いた時、
読み取り専用であることに気づかずにそのまま編集を進めてしまうことがあります。
ステータスラインに読み取り専用かどうか表示されているのですが、なかなか気づきにくいです。

カラースキーマを変えることができれば、ぱっと見わかりやすいのでは?と思ったのでやってみました。

設定

vimrcに以下のように設定します。

autocmdを使用して、ファイルを読み込んだ後に UpdateColorScheme を呼び出します。
UpdateColorSchemeの中では、 readonly, buftype を確認してカラースキーマを決定しています。

通常は、gruvbox をDarkで使用していて、読み取り専用の場合には、morning になります。

buftype について

最初は、 readonly だけをチェックしていたのですが、ヘルプを開いた際にもカラースキーマが変わってしまうので、 buftype もチェックするようにしました。
(社内のVimmerに教えてもらいました。)

スクリーンショット

見た目は以下のようになります。

編集できるとき
colrscheme: gruvbox

読み取り専用のとき(二重で開いています)
colorscheme: morning

ぱっと見で「う、うわぁーーーー」って気づくので、すぐに対処することができるようになりました。

上手く動かない点

異なるタブや分割したウィンドウで読み取り専用のファイルを開いてしまうと、
アプリケーション全体の配色が変わってしまいます。

特定のファイルを表示しているウィンドウだけ配色が変えられると嬉しいのですが、できないようですね…。

おまけ:目が、目がぁ〜

Vim8 だとこんな設定もできます!

目が、目がぁ〜

以上です。

Comments are closed, but you can leave a trackback: Trackback URL.