Skip to content
n-s tokyo
Go back

Neovim移行記

はじめに

しばらく惰性でコードエディタとしてVisual Studio Codeを利用していた。ただ、AIエージェントにコーディングを任せる比率が増え、自分が書くより読む/指示する/微修正する時間のほうが長くなった今、重たいエディタは不要なのでは論や、拡張機能を狙ったサプライチェーン攻撃が怖いといった昨今の風潮には、私も素直に同意できるところがあった。
それに、そもそもVS Codeを大して使いこなせていたわけでもないので、もう少しシンプルで軽量なものに乗り換えてみようと思い立った。

移行先を検討するにあたり、できればターミナルで完結させたい気持ちがあった。
Claude Codeはデスクトップアプリも便利という話を最近耳にするが、経歴的にインフラエンジニアをやっていた期間が長く、個人的にターミナル内のほうが落ち着くというか、知らないGUIアプリを使って何が起こるか不安みたいな気持ちもあって、漠然とCLIを使い続けている。
またもともとVimmer、というかvi戦士あがりであるため、vim系の何かだと安心感がある。
というところからClaudeに壁打ちしてもらって、Neovimを最小限カスタマイズするのがよさそうというところに至った。
Neovimの存在は認知していたのだが、何か難しそうでずっとvimのままだったので、重い腰をあげるのにもちょうど良さそうということで移行を試みる。
ここまで書いて、なんだか年齢のせいか新しいツールをすぐ試してみようという気持ちが弱まっているのだろうか。そういうのが一番楽しかった気がするのだが。悲しい。

要件

設計方針

ほしい機能

このくらいをClaude Codeに与えてプランを作ってもらう。

できたもの

以下のようになっている。

https://github.com/j-un/dotfiles/tree/main/dot_config/nvim
https://github.com/j-un/dotfiles/blob/main/dot_config/mise/conf.d/nvim-tools.toml

以下、ポイントの説明。

Mason未使用

NeovimではLSP管理に Mason というパッケージマネージャを利用するケースが多いらしい。
しかしMasonは ~/.local/share/nvim/mason/ 配下にバイナリを置くようで、これはnvimプロセス内からしか見えない。これだと極力同じツールを共用したいという設計原則に反する。
そのため代わりにmiseとhomebrewで管理して組み込むことにした。

結果として nvim 設定から Mason 関連プラグイン群が消えて、設定が薄くなった。
反面brewなどプラットフォーム依存な仕組みになってしまったが、今回は許容で。

mise の conf.d にnvim 用ツールを 1 ファイルに集約

miseもあまり使いこなせてはいないのだが、configを分割して管理できるようなので、~/.config/mise/conf.d/nvim-tools.toml を新設した。
これでNeovim依存を避けつつ、Neovimを捨てる時も影響範囲はこのファイルに集約されているので見通しが良い。

導入プラグインなど

Claude Codeに教えてもらいながら以下のような感じで。

カテゴリプラグイン
プラグイン管理lazy.nvim
カラースキームtokyonight.nvim
ファイラーneo-tree.nvim
シンタックスnvim-treesitter
ステータスラインlualine.nvim
バッファ切り替えbufferline.nvim
LSPnvim-lspconfig
フォーマッタconform.nvim
Gitgitsigns.nvim
検索fzf-lua
補完blink.cmp

ファイル検索は Telescope が高機能で良いらしいのだが、やや他のプラグイン依存の機能が多そうなのと、そこまで高機能でなくてもよいので、すでにインストール済みのfzfを使う fzf-lua というのを採用してみた。

結果と雑感

まだほとんど使っていないものの、ターミナル内でvimっぽいキーバインドで使えるだけでだいぶ気持ちがいい。
またNeovimは難しそうと思っていたが、VimScriptのほうがよっぽど難しいではないか。
総じて今まで何故こうしなかったのか悔やまれるくらい良さげである。
まだよく分かっていないところもあるけどひとまずはこれでやってみます。

やや残課題として、いくつか関わっているプロジェクトでDevContainerを採用していて、VS Code以外でうまく運用した経験がないのだが、いい機会なので何とかしてみることとする。
DevContainerで何やりたかったんだっけ?を再整理するいい機会でもあるかもしれない(サンドボックスで開発したかったのか?開発環境を簡単に立ち上げたかったのか?的な)。

備忘メモ

あまりてんこ盛りにしたくないが、このへん良さそう。

claudecode.nvim
toggleterm.nvim


Share this post on:

Next Post
サーバーレスなマークダウンノートWebアプリを作った話と雑感