はじめに
Vim9 scriptが本体にマージされてスコープ事情がややこしくなって来ましたので、視覚的な判別をしやすくするためにスコープ別に色を付けるプラグインを作成しました。
wordijp/vim-vimscript-scope-syntax
vim-plugをお使いの方は以下をvimrcに追加して:PlugInstallでインストールするだけで動きます。
Plug 'wordijp/vim-vimscript-scope-syntax'
デモ
カラースキーム slate での比較です。
適用前はすべての変数が同じ色になっているため、Vim scriptへの慣れが必要です。
Vim9 scriptでは文法が若干変わったため、それらへの対応がまだとなっています。
少し触ったところまだバグがあるようでしたので1、落ち着いたころに対応しようかと思います。
Vim9 script登場によるスコープ事情について
Vim9 scriptでは、ローカルスコープの変数に接頭辞 l:
が不要になっていたり、演算・代入の際に let
が不要になっています。
その為すべての変数にスコープ別の接頭辞を付けるわけにはいかなくなり、現在のスコープから変数がどのスコープに属しているかを意識する必要が若干出てきました。
関数の外で s:
を付けずにグローバルスコープにしてしまうのは初心者の頃によくやりがちですが2、今後は接頭辞付きで統一するわけにはいかなくなり、接頭辞無し変数を使う機会が増えてくるかと思います。
スコープ別の色付けについて
色は、グローバル(g:)、スタティック(s:)、ローカル(l:)、引数(a:)の4種類と、それ以外の特殊系(b:、 w:、 t:、 v:)を同じ色にした計5種類を設定していますが、それぞれの色は現在のカラースキームから自動生成をしています。
こだわりポイントとしては、4種類を寒暖色にして、グローバルとスタティックは寒色、ローカルと引数を暖色にする事により、画面全体が暖色に近づくほど変数のスコープが狭くなっていると判断できるようにしてみました。
おわりに
Vim9 scriptにはまだバグがあるようですので、仕様が落ち着いたら改めて修正しようかと思います。