序
Archlinux (Manjaro
Linux)にあるvim-plugins
をインストールすると、ものすごく狂った感じの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
につけるわけだが、普通に入力リダイレクトするとうまくいかない。
pacman
とvim
が標準入力を読むからだ。
そこで、fd
3
から読むようにリダイレクトして、ループ内でread -u3
として読む。
ループの処理はパッケージを消す、vimで開く、y/nを押して問題のパッケージを特定する、というもの。