🔖

vimでE117:存在しない関数のエラーが発生した時の原因の見つけた(備忘録)

2023/07/07に公開

PCの移行時にvimプラグイン(dein.vimで管理)を入れ直していたらvim起動時に以下のようなエラーに遭遇しました。

E117: Unknown function: requirements#shebang

エラーで検索しても全然出てこないようなやつです。

やったこと

自身の設定を検索

私はvimの設定をdotfilesとしてコード管理しているので、自分の設定ファイルの中に同じ関数がないか探しましたが、何も出ませんでした。

rg requirements#shebang

プラグインを更新してみる

今回はvimごと新しく入れてインストールし直したので古いと言うことはないと思いますが、とりあえず更新してみましたがまあ予想通り効果はありませんでしたね。

:call dein#update()

プラグインを疑う

プラグインのバージョン的にバグが発生している場合や、特にちょっとマイナーなプラグインを使っている場合なんかは問題が顕在化されずに放置されているパターンがあります。

まずはGitHubでエラー文や関数名で検索してみます。
今回私はまず関数名で検索してみました。
これで結果が多いようならエラー文でも検索する予定でしたが、恐らくあまり検索結果数は多くないだろうと想像してのことでした。

するとリポジトリが一件だけヒットしました。
vimのプラグインですね。
まさかと言うことでプラグインマネージャに一覧化されているプラグイン一覧で検索してみたところ同じ名前のプラグインを入れていました。

rg requirements.txt.vim
lazy_dein.toml
88:repo = 'raimon49/requirements.txt.vim'

もしこれが今必要なプラグインであればOSSコミットのチャンスですが、今の私には必要のないプラグインだったので消してしまします。

プラグインを消す

  1. まずはコード上からプラグインを消す
  2. :call dein#recache_runtimepath()でキャッシュを削除
  3. それでも消えなければrm -rf ~/.cache/dein/repos/github.com/{対象のリポジトリ}で直接消す

これで対象のプラグインは削除されました。

まとめ

私はvimを使っているものの一度ガッツリ設定をしてしまえばあまり弄らずにそのまま使い続けてしまうので、たまに触るとデバッグ方法やら調査方法やら忘れてしまいがちになります。
なのでちょっとしたメモ書き程度で書いて、ついでに誰かの役に立てばいいかなくらいの気持ちで公開しておきます。

Discussion