NeovimをLua環境に移行する 第1回
- #neovim #neovim-plugins #lua #rust
色々と一段落したので久々に更新
NeovimのLua移行記事リンク
- 第1回(今回)
- 第2回
要約
2024年4月ごろ、余裕が出てきたのでRustに慣れる目的で簡単なツールを自作したりしていた
その時はVSCodeを使って書いていたのだが、「やはりNeovimでRustを書きたい」と思うようになり……
結果として、2020年から約4年ぶりにNeovimを全面的にLuaへ移行することを決意した
これまでやっていたこと
2024年3月頃から現在まで、下記のようなことをやっていた
- Rustの技術書を1冊消化
- Rustで簡易ツールを作成
- NeovimのLua環境への全面移行
- WindowsTerminalからWezTermへの移行
- その他dotfilesなどの見直し
- LuaでNeovimプラグイン開発
Rust製の簡易ツールについて
今年、人気ゲームSlay the Spireの続編『Slay the Spire 2』が発表された
ニュースでゲームのことを思い出して久々にプレイしてみたりしたが、その途中で「オートセーブデータの状態を監視するツール」を思いつき、試しに作ってみることにした
それがこちら
OBSなどのツールで画面上に表示できるよう、オートセーブ内の各種パラメータを .txt 形式で出力するツールだ
主にRustとFSM(有限状態機械、有限オートマトン)の実装慣れの為に学習目的で作ってみたもので、実装は汚く、実用性は特にない 1と思う
ただ、これを作ったことで改めて「Rustは書きやすい2な」と実感すると同時に、VSCodeだけでなくNeovimの開発環境をしっかり作り込む必要があると感じた
VSCodeだけでなくNeovimも使いたくなる
元々Neovimは軽い設定ファイル(TOMLやJSONなど)を弄る時に高速で立ち上げて使う程度で、コーディングは主にVSCodeですることが多かった
手元で使うPythonスクリプトを書く時などにもJupyter NotebookのVSCode拡張機能があるのでそちらを利用することが多かった
また、VSCodeにはvscodevimやGit関連など一通りの拡張機能も入れ、コーディングが最低限できるぐらいには環境構築を済ませていたのだが……
しかし……
やはりVSCode上でVimキーバインドを利用しても、IME周りでちょっと不審な挙動3をしていたり、vscode-vimのキーバインドがVSCode側のショートカットと重複してしまったり、不都合が多々あった
VSCodeで書いている内に、いつの間にか「Neovimの書き心地でRustが書けたら楽なのに……」と思うようになった
NeovimのLua環境移行を決意
Neovimについて調べているうちに、当時使っていたプラグインマネージャーのdein.vimからの移行の必要性を強く感じるようになった
以前はLSP等に関してもcoc.nvimなどを入れるのが主流だったように記憶しているが、4年ぶりに見てみると全く以て情勢が変わっていた
ちなみに自分が元々Neovimで使っていたプラグイン一覧はここにまとまっている
しかし現在、LSPはNeovimの ネイティブLSPが強力な機能としてユーザーからの信頼を集めており、Lua系で書かれたプラグインをlazy.nvimやpacker.nvimなどで管理する人も増えているらしい
また、GitHubで様々なNeovimプラグインを見ていると、下記のようなある共通点があることに気づいた
- 各プラグインが特定のプラグインとの連携機能を提供
- 古くからあるVimプラグインの代替となるLua製プラグインが登場
どうやら人気を集めている強力なLua製プラグインが複数存在し、そのプラグインを中心に新たなエコシステムが形成されているらしいことが分かって来た
dein.vimも別に嫌ではないのだが、TOMLで管理するよりプログラマブルなLuaで管理する方が柔軟性が高そうだった
ということで、色々と調べた結果Lua系の環境へ移行した方が良いということに気づき、Neovimのプラグインも全面的に見直すことを決意した
おわりに
今回はここまで
次回以降はNeovimのLua環境への移行について書いていく
ただし移行作業中に取ったメモが15000行以上に及ぶので、経過をただこのブログに書くことはせず、人の役に立ちそうな内容に極力絞っていきたいと思う