LazyVimでNeovimをプロフェッショナルなIDEに:LSP、Masonの設定とワークフローの最適化

Development tutorial - IT technology blog
Development tutorial - IT technology blog

なぜVS CodeからNeovimに乗り換えるのか?

最も多く受ける質問は「VS Codeが快適なのに、なぜ苦労してNeovimのショートカットを学ぶ必要があるのか?」というものです。5年間、あらゆるエディタを使い込んできた私の答えは、一言で言えば「圧倒的な集中力」です。

実際、100以上のコンポーネントを持つNext.jsプロジェクトで、ファイルを選択するためにキーボードから手を離してマウスを操作することが、思考のフローを頻繁に中断させていることに気づきました。LazyVimに移行したことで、生産性は飛躍的に向上しました。Neovimのメモリ消費量はわずか60〜80MB程度ですが、VS Codeは同じプロジェクトで1GBから1.5GBを占有することがよくあります。

Neovimを「カスタマイズ」するためのアプローチ

設定を始める前に、既存の選択肢を理解しておく必要があります。

  • 自作 (Vanilla Neovim): init.luaを自分で書き、lazy.nvimでプラグインを管理します。この方法はシステムの深い理解に繋がりますが、非常に時間がかかります。私はかつて、LSPに設定ファイルを正しく認識させるだけで3晩徹夜したことがあります。
  • 配布版 (Distros) を使う: NvChad、AstroNvim、LazyVimなど。これらは最適化済みのフレームワークで、インストールしてすぐに使えます。

なぜLazyVimがナンバーワンの選択肢なのか?

NvChad(高速だがカスタマイズが難しい)やAstroNvim(少し煩雑)を試した結果、私はLazyVimに落ち着きました。最大の魅力はモジュール構造です。lazy-loading(遅延読み込み)メカニズムにより、プラグインは必要な時にだけロードされます。その結果、起動時間(startup time)は常に50ms以下を維持しています。

導入:Neovimを開発マシンに変える

1. 環境の準備

Neovimのバージョン0.9.0以上をインストールする必要があります。また、UI表示が崩れないようにNerd Fontsをインストールしてください。私は視認性の高いJetBrainsMono Nerd Fontを好んで使っています。

# 現在のバージョンを確認
nvim --version

2. LazyVim Starterのインストール

標準的な構成を得るために、starterリポジトリをクローンします。データの紛失を防ぐため、古い設定のバックアップを忘れずに行ってください。

# 古い設定をバックアップ
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak

# LazyVim starterをクローン
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git

nvimコマンドでNeovimを開くと、システムが自動的にプラグインをダウンロードします。JetBrainsに引けを取らないモダンなインターフェースでパッケージが自動インストールされる様子を見るのは、本当にワクワクします。

3. MasonによるLSPとツールの管理

Masonは最も価値のある機能の一つです。Language Server (LSP)、Linter、Formatterのための「App Store」のような役割を果たします。

:Masonと入力するだけで、Python用のpyrightTypeScript用のtsserverGo用のgoplsなどをキー一つでインストールできます。OSに各バイナリを手動でインストールする代わりに、Masonはすべてをnvimディレクトリ内で一元管理します。

4. ワークフローを最適化するショートカットキー

LazyVimのショートカットシステムは<leader>キー(スペースキー)に基づいています。以下は、コードをより速く書くために私が頻繁に使用する組み合わせです:

  • <space> f f: Telescopeによる即時ファイル検索。
  • <space> s g: プロジェクト全体からの文字列検索 (Live grep)。
  • <space> e: Neo-treeディレクトリツリーの開閉。
  • K: 関数や変数のドキュメントをクイック表示 (hover doc)。
  • g d: 定義場所へジャンプ (Go to definition)。

各言語用のExtras設定

LazyVimは非常に便利なLazyExtras機能をサポートしています。DockerやRustの環境構築のために、何十行もの複雑なLuaコードをコピー&ペーストする必要はありません。

:LazyExtrasと入力し、xキーでlang.typescriptui.edgyなどのモジュールを有効化します。システムはその言語に最適なformat-on-save(保存時フォーマット)や自動補完を自動的に設定します。

ツールを使いこなすための個人カスタマイズ

Neovimを本当に自分に役立つものにするために、lua/config/options.luaファイルを編集することをお勧めします。欠かせない設定の一つはrelativenumberです。これにより、行間の距離を計算して非常に素早くコード内をジャンプできるようになります。

-- ファイル: lua/config/options.lua
vim.opt.relativenumber = true -- 相対行番号を表示
vim.opt.cursorline = true     -- カレント行をハイライト

Gitを頻繁に利用する場合は、内蔵されているLazyGitを活用しましょう。<space> g gを押すと、強力なGit管理インターフェースが表示されます。コード画面を離れることなく、ステージング、コミット、コンフリクトの解消が可能です。

終わりに

Neovimへの移行直後の1〜2週間は、ショートカットを覚えるために作業スピードが落ちるかもしれません。しかし、得られる報酬は、マウスに依存しないスムーズなワークフローと、極めて少ないリソース消費です。基本的な設定から始めて、徐々に自分らしいスタイルを反映した作業環境を構築していきましょう。

Share: