/ #ruby #neovim 

rubyで、「ローカル変数かメソッドか」は区別できるということと、vimのシンタックスハイライト

ローカル変数 か メソッドか

以下のファイルを用意し、

# test.rb
@a
:x
Hash
a = 1
a
b

puts(:ended!)

ruby -cw test.rb を実行すると

@a, :x, Hash, a のところは警告が出る。

$ ruby -cw test.rb
test.rb:2: warning: possibly useless use of a variable in void context
test.rb:3: warning: possibly useless use of a literal in void context
test.rb:4: warning: possibly useless use of a constant in void context
test.rb:6: warning: possibly useless use of a variable in void context
Syntax OK

rubocopの Lint/Void も同じような警告を出す。

しかし、b のところは警告が出ない。

これは、b というローカル変数が、前もって定義されていないことがわかっている から。

標準添付の ripper ライブラリや parser gem(rubocopが使ってるやつ)で解析できる。

これを利用してローカル変数とメソッドを区別してシンタックスハイライトするのが todesking/ruby_hl_lvar.vim

Rubyのローカル変数をシンタクスハイライトするVimプラグインを書いた - TODESKING

手元のneovimでも動いた。これを入れるとこうなる👇。

before

ruby neovim lvar before

after

ruby neovim lvar before


自分の場合は $ gem install neovim が必要だった。

なお、自分のcolorscheme設定だと、他には特に何も設定せずに、いい感じに色がついた。

iro.vim

そしてpocke/iro.vimというやつでもこれは実現できる。ということを手元でも確認した。

rubykaigiでもトークがあったやつ。

こっちは、私の色の設定がうまくいかなかったので、今日はここまで。

✎まとめ

理論はわかるんだが、vimの色設定周りがよくわからん

Author

hoshinotsuyoshi

星野剛志(ほしのつよし) web application engineer. ruby/rails/docker