LoginSignup
8
2

More than 3 years have passed since last update.

Vim scriptの変数にスコープ別の色を付けるプラグインを作成した

Last updated at Posted at 2020-01-29

はじめに

Vim9 scriptが本体にマージされてスコープ事情がややこしくなって来ましたので、視覚的な判別をしやすくするためにスコープ別に色を付けるプラグインを作成しました。

wordijp/vim-vimscript-scope-syntax

vim-plugをお使いの方は以下をvimrcに追加して:PlugInstallでインストールするだけで動きます。

Plug 'wordijp/vim-vimscript-scope-syntax'

デモ

カラースキーム slate での比較です。
適用前はすべての変数が同じ色になっているため、Vim scriptへの慣れが必要です。
demo_desert_before.png

こちらが、下のようにスコープ別に色が付きます。
demo_desert_after.png

Vim9 scriptでは文法が若干変わったため、それらへの対応がまだとなっています。
少し触ったところまだバグがあるようでしたので1、落ち着いたころに対応しようかと思います。

Vim9 script登場によるスコープ事情について

Vim9 scriptでは、ローカルスコープの変数に接頭辞 l: が不要になっていたり、演算・代入の際に let が不要になっています。
その為すべての変数にスコープ別の接頭辞を付けるわけにはいかなくなり、現在のスコープから変数がどのスコープに属しているかを意識する必要が若干出てきました。
関数の外で s: を付けずにグローバルスコープにしてしまうのは初心者の頃によくやりがちですが2、今後は接頭辞付きで統一するわけにはいかなくなり、接頭辞無し変数を使う機会が増えてくるかと思います。

スコープ別の色付けについて

色は、グローバル(g:)、スクリプト(s:)、ローカル(l:)、引数(a:)の4種類と、それ以外の特殊系(b:、 w:、 t:、 v:)を同じ色にした計5種類を設定していますが、それぞれの色は現在のカラースキームから自動生成をしています。
こだわりポイントとしては、4種類を寒暖色にして、グローバルとスクリプトは寒色、ローカルと引数を暖色にする事により、画面全体が暖色に近づくほど変数のスコープが狭くなっていると判断できるようにしてみました。

おわりに

Vim9 scriptにはまだバグがあるようですので、仕様が落ち着いたら改めて修正しようかと思います。


  1. インクリメント・デクリメントがREADME.mdには追加されたが出来なかったり、変数 i を使うとエラーが発生したり。 

  2. すぐに慣れるとは思います。 

8
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2