2024年個人的Neovim環境振り返り

Daiki
·
公開:2024/12/13

2024年4月を起点として、私のNeovim環境が大きく変化したのでアウトプットしておく。

ダラダラと書いていたらすごいボリュームになった...

〜2024年4月

プライベート環境でNeovim環境の編集に利用していた。

当時の目標は

  • Luaを書きやすい環境を目指していた。

  • たくさんあるファイラー系から自分に合ったプラグインを選択する。

  • たくさんあるファジーファインダー系から自分に合ったプラグインを選択する。

  • Neovimの仕組みを理解する。

Vimも少しだけ触ったが、Neovimのモダンな見た目に惹かれてからはNeovimのみ利用していた。

プラグインがたくさんあるので、それぞれの操作感を楽しみつつ、Neovimの仕組みを理解する期間だった。プラグインを起動するタイミングなどをdein.vimで学んだ。


主な利用プラグイン

他にも細々したプラグインを利用していたが割愛。

特に、ddc系、ddu系は山盛り。


Neovim環境を構築するためのNeovim環境だった時期

仕事でプログラミングしていない頃で、プライベートでも作りたいものが無い。そんな時にNeovimと出会ったのでNeovim環境を構築するためのNeovim環境を構築していた。

この時期は

  • 自作カラーテーマを作成

  • Neovimを学ぶためにShougoware利用

自作カラーテーマを作成

coolnessFlair.vimというカラーテーマを自作した。

これがきっかけで、他のカラーテーマも自作し始めた。

Inkdropのカラーテーマ

VS Codeのカラーテーマ

カラーテーマは目に影響を与える要素なので特に気を付けていた。

自作前はicebergtokyonight.nvimなどをその日の気分で使用していた。

現在は、sakurajima.nvimという自作カラーテーマを使っている。

このテーマはNeovim専用で作成した。

とても見やすく満足している。

Neovimを学ぶためにShougoware利用

初めて導入したdein.vimの使い心地が最高だった。

現在のdein.vimは開発を終了し不具合修正対応のみらしい。

現在は、dpp.vimが積極的に開発されているようだ。

  • TOMLでプラグイン管理出来る。

  • プラグインの起動イベントを細かく設定出来る。

作者のZenn記事でプラグインマネージャーの歴史について詳しく解説されている。

私はdein.vim以前のプラグインマネージャーに関しては実際に使用したことが無い新参者なので。

dein.vimを通してプラグインの起動タイミングをチューニングする方法を学んだ。

補完フレームワークとしてddc.vimを利用した。

If you don't want to configure plugins, you don't have to use the plugin. It does not work with zero configuration. You can use other plugins.

設定しなければ動かない。

ユーザーが何も出来なければプラグインも何もしない。

これもまた作者のZenn記事で補完フレームワークの歴史とともに解説されている。

当時、Neovimで補完フレームワークの選択肢としてnvim-cmpが主流っぽかった。

  • 強めの思想に惹かれた。

  • ShougowareがVim / Neovimに対する学習に最適だと感じていた。

  • 当時Denoに興味があった。

ddc.vimはそれだけでは動作しないので、souceとなるプラグインなどを利用する。

UIフレームワークとしてddu.vimを利用した。

If you don't want to configure plugins, you don't have to use the plugin. It does not work with zero configuration. You can use other plugins.

こちらもddc.vim同様、基本的に動かない。

またまた作者のZenn記事が公開された。歴史の勉強にもなる。

当時はファジーファインダー系プラグインだと思っていたが、UIフレームワークなのでファイラーにもなる。

この時点で「プラグインマネージャーがdein.vim」「LSP補完にddc.vim」「ファジーファインダーとファイラーにddu.vim」とShougowareで身を固めることとなった。

それぞれのREADME冒頭であるように、設定しないと動かない。

簡単にVim / Neovimを使いたい方は他のプラグインを利用するよう記載がある。

変な副作用が存在しないので順を追ってNeovimの処理を追う勉強になる。

この経験は今後Neovimユーザーとして過ごしていく大きな糧となった。

私のように、この思想に惹かれてShougo氏のファンになる方も多いと思う。

これまでに多くのプラグインを開発していたという背景があるのもまた良い。

様々なプラグイン開発や本体へのコミットを経て、この思想に至ったというのが説得力になっていると感じた。

他にも現在開発中のShougowareが存在する。

これらの進捗はShougo氏のGitHubで観察している。

2024年4月〜

そして2024年4月に、環境を大きく変化した。


主な利用プラグイン


ShougowareからLua製プラグインへ移行した。

  • 日々アップデートする多くのプラグインを管理出来なくなってきた。

  • 仕事でプログラムを書く、プライベートでプログラムを書く時間が増えてきてNeovimで安定した環境をなるべく手間なく維持したい。

If you don't want to configure plugins, you don't have to use the plugin. It does not work with zero configuration. You can use other plugins.

ddc.vim、ddu.vimのREADME冒頭にある通り、私は設定する時間を作れなくなった。

ということで、全面的にNeovimの環境を見直した。


プラグインマネージャー

dein.vimからlazy.nvimへ移行した。

lazy.nvimはNeovim用プラグインマネージャーだ。

README以外に、ドキュメントが用意されている。親切。

プラグインを管理するためのUIを搭載している。これがとてもかっこいいし分かりやすい見た目をしている。

他にも、起動が高速であったりLockfileを生成してインストール済みのプラグインを追跡可能にしたりとlazy.nvimで初めて聞くような特徴が多かった。

  • 📦 Manage all your Neovim plugins with a powerful UI

  • 🚀 Fast startup times thanks to automatic caching and bytecode compilation of Lua modules

  • 💾 Partial clones instead of shallow clones

  • 🔌 Automatic lazy-loading of Lua modules and lazy-loading on events, commands, filetypes, and key mappings

  • ⏳ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away

  • 💪 Async execution for improved performance

  • 🛠️ No need to manually compile plugins

  • 🧪 Correct sequencing of dependencies

  • 📁 Configurable in multiple files

  • 📚 Generates helptags of the headings in README.md files for plugins that don't have vimdocs

  • 💻 Dev options and patterns for using local plugins

  • 📊 Profiling tools to optimize performance

  • 🔒 Lockfile lazy-lock.json to keep track of installed plugins

  • 🔎 Automatically check for updates

  • 📋 Commit, branch, tag, version, and full Semver support

  • 📈 Statusline component to see the number of pending updates

  • 🎨 Automatically lazy-loads colorschemes

lazy.nvimに移行して半年以上経過したが、不満は全く無い。快適そのものだ。


LSP補完

nvim-lspconfig + mason.nvim + mason-lspconfig.nvim + ddc.vimから、coc.nvimへ移行した。

  • ddc.vimは理解出来たがLSPの理解が浅く日常的にエラーが発生していた。

  • coc.nvimはLSPの知識が無くてもcoc.nvimのREADME通りに導入してすぐに利用出来る。

LSPの勉強不足なだけ。そんな状態で背伸びする暇があるならcoc.nvimを使ってさっさと仕事した方が良い。という結果に至った。

最近、nvim-lspconfig + mason.nvim + mason-lspconfig.nvim + blink.cmpの構成も試してみたが、やはりLSP知識不足でcoc.nvimへ帰還した。

coc.nvimはNode.js依存。

私はWeb系の開発もするので問題にならない。むしろNode.jsはインストールしていて当たり前の環境でしかNeovimを利用していない。

Neovimにbuiltin LSPがサポートされる前は、みんなcoc.nvimを使用していたのかな?

coc.nvimに関する記事は大体2020年ぐらいが多い。最近はnvim-lspconfigへ移行した系の記事が多いので時代に逆行している感じはあるが、coc.nvim簡単さが好きになってきている。

Node.js環境とDeno環境でcoc-tsserverとcoc-denoを切り替えたり、Rustはcoc-rust-analyzerがちゃんと動作する。

rust-analyzer公式マニュアルでも案内がある。

私の利用する言語は全てカバーされてるので使いやすい。


ファイラー

ddu.vim + ddu-ui-filerからoil.nvimへ移行した。

正直、今回の移行でこれが一番衝撃だった。最&高だ。

oil.nvimへ移行する前にnvim-tree.luaを利用してみた。

これは、左にずっとツリー表示出来るプラグイン。VS Codeみたいな感じ。

これもこれで使いやすかった。でもやっぱりファイルの作成や名前変更などでムズムズしていた。

oil.nvimはNeovimのバッファで編集する感覚でファイルを追加したり削除したり名前変更したりコピーしたり出来るから直感的に操作出来る。気持ち良すぎる。なんで今まで見つけることが出来なかったのか...

ファイル名の変更も短形モードでさっと出来たりしたときには気絶しそうだった。Windowsをメインで利用しているが、この機能だけでも良いからエクスプローラーに導入してくれないかな。


ファジーファインダー

ddu.vim + ddu-ui-ffからtelescope.nvimへ移行した。

こちらも、README通りに導入すればすぐに利用出来る。

私はファジーファインダーとして利用しているが拡張することも出来る。

拡張にはファイラーも存在する。

かっこいい見た目だ。

oil.nvimの使い心地を上回ることはなかったので不採用だった。


カラーテーマ

coolnessFlair.vimからsakurajima.nvimへ移行した。

しずかなインターネットでも触れた。

この投稿内にある個人サイトへのリンクは切れている。

個人サイトも最近移行したから。

coolnessFlair.vimは寒色系ダークテーマをコンセプトにして作成したが、sakurajima.nvimは暖色系ダークテーマをコンセプトに作成した。

coolnessFlair.vimは当時利用していたiceberg.vimの影響をもろに受けている。

sakurajima.nvim作成理由は、Luaでカラーテーマを作ってみたかったから。

私はNeovimしか利用しないので。

coolnessFlair.vimとは違ったダークテーマを作りたい & 地元鹿児島の名物桜島をイメージしたいという思いで作成した。

ダークテーマだが真っ黒過ぎず、火山灰が降った後のような灰色と黒色の中間みたいな色をメインカラーにした。

更に桜島の溶岩をイメージしやすいように寒色系ではなく暖色系に。

そして完成した。

半年ぐらい利用しているが、長時間のコーディングでも疲れない。

作って良かった。


前回の構成から移行したプラグインはこれぐらい。

あとは、flash.nvimやsnacks.nvimなどを追加で導入しNeovimのQoLを多少良くした。flash.nvimに関してはジャンプぐらいでしか利用出来ていないので範囲操作などの機能も今後は使いこなしたい。

どのプラグインも武器を持っていて、ユーザーとしては多くの選択肢を用意出来るので良い環境だと思う。

ファイラーにしても、VS Codeを例に挙げると左にサイドバーとして表示するのが一般的だ。右にも出来るっぽいが大概左サイドに固定していると思う。

だがNeovimはoil.nvimのようなアプローチもあることを知った。本当に面白い世界だ。

私は、プラグイン開発に関しては素人。カラーテーマであれば2つ作った経験があるが機能プラグインは開発したことが無い。

今後、時間に余裕が出来たらひとつぐらい作ってみたい。

Neovimは本体もだけどプラグインも次々に新しいものが誕生するので、観察して面白そうなプラグインは積極的に使ってみようと思う。

私がプラグインを探すときはこの二つのリポジトリを眺めている。

こちらはサイトに表示してくれている。

私は、GitHubスター数や開発が賑わっているかを基準に決めている。

とても見やすい。

今では少し古いがZennでも紹介されていた。

石田銀を上回るとは...すごい

@daiki48
好きなことを書く場所 趣味や日常をざっくりと... dnfolio.me