はじめに
2ヶ月ほど前、以下の記事を読んでVimに興味を持ちました。
私の中でのそれまでのVimのイメージは、「大学の講義で使ったことがある(しかし定着しなかった)Emacsのライバル」であり「新人研修で遭遇した閉じれなくなった過去があるエディタ」でしたが、上記の記事を読んで、それまで使っていたVSCodeからすぐに乗り換えることは難しそうだけど「慣れると早そうだな」と感じたことを覚えています。
その後、@yutkatさんの書かれた以下の記事を読み、VSCodeでVim(Neovim)を使えるVSCode Neovimを知りおよそ1ヶ月使用した後に、最近では徐々にNeovim自体へのエディタの移行を進めています。
packer.nvimについて
Neovimのプラグインマネージャについて、Vim scriptよりLuaで設定を書いてみたかったこともあり、私はpacker.nvimを使っています。packerはコマンドでのプラグイン管理を始め、Neovim標準のプラグイン管理機能に対して様々な追加機能を提供してくれます。以下の記事を参考にさせていただき、導入に至りました。
Undefined global `use`について
packerではpacker.startup
で受け取った関数内でuse関数を使うことでプラグインを読み込みます。その際に私の環境では以下のようなWarningが頻発していました。
プラグインのロード自体に問題はなかったのですが、あまり気持ちのいいものではないですよね。
対処
調べてみたところ、以下のIssueを見つけました。
上記によれば、
- この事象
packer.startup
に渡された関数内で使用されたuse関数をlspが認識できず発生しており、以下のいずれかによって解消できる。- lspのグローバルにuseを追加する
-
packer.startup
に渡す関数がuseを受け取るようにする(推奨🌟)
とのことです。
実際に、下記のようにpacker.startup
に渡す関数にuseを渡すことで、このWarningは解消することができました。
packer.startup(function(use)
use 'XXX/YYY'
end)
おわりに
2021/3/4にCloseされた上記のIssue以降に、packerのリポジトリのREADMEには以下のような記述が追加されています。
Note that if you get linter complaints about use being an undefined global, these errors are spurious - packer injects use into the scope of the function passed to startup. If these errors bother you, the easiest fix is to simply specify use as an argument to the function you pass to startup.
よって、現在は公式に解決済みの問題となりますが、参考にする情報の更新時期やlspとの組み合わせによっては、同様の問題が発生し得ると思い記載しました。まだまだ初心者ですが、少しずつVimスキルも向上させていきたいです💪