Vimから狂えるRuby Linterを除去する (Archlinux)

2023-07-23

Archlinux (Manjaro Linux)にあるvim-pluginsをインストールすると、ものすごく狂った感じのRuby Linterが入る。

どんな感じかと言うと

vim-aleのRuby Linter

shebang行すら書けず、スペースを入れろとか、文字列リテラルにダブルクォートを使うなとか、ものすごく細かい好みに基づくエラーメッセージで埋め尽くされてしまう。

ついでに、Rubyは非常に複雑な言語であり、それほど広くは使われていない文法もあったりするが、このLinterはそれが検出できずに、Linterを黙らせる修正をすると動かなくなったりすることもザラ。 あるいは、「その文法を使うな」と言われることも多々ある。

正直、このLinterがあると、とてもRubyは書けない。

結論としては、vim-aleが犯人で、pacman -R vim-ale すれば解決するのだが、これの特定手順がちょっと参考になりそうだったので、ここに残す。

手順

まずはパッケージグループに所属するパッケージの一覧を取得する。

% pacman -Sg vim-plugins | sed 's/[^ ]* //' > pkglist

チェックに使えるRubyスクリプトを用意、チェック用の次のスクリプトを用意する。

#!/bin/zsh

typeset -g f

while read -u3 f
do
  print DELETE $f
  sudo pacman -Rdd $f
  vim pbsimply.rb
  if read -q "?Is this it?[y/N] "
  then
    print
    print FOUND BAD PLUGIN $f
    exit
  fi
done 3< pkglist

ポイントが2つある。

まず、パッケージは依存関係関係なしに消したいので、-Rddしている。

whileにリダイレクトをつけるにはdoneにつけるわけだが、普通に入力リダイレクトするとうまくいかない。 pacmanvimが標準入力を読むからだ。

そこで、fd 3から読むようにリダイレクトして、ループ内でread -u3として読む。

ループの処理はパッケージを消す、vimで開く、y/nを押して問題のパッケージを特定する、というもの。