Neovimを使い始める最初の一歩として便利な「LazyVim」

ターミナル上でそのままの流れでファイル編集をしたい場合、候補に上がってくるのがNeovimです。
ただ、Neovimはデフォルトの状態だと「これデフォルトだとできないの?Visual Studio Codeならあるのに……」というものが多いです。
そこから設定やプラグインを積み重ねていって自分の理想のエディタにしていくのが醍醐味ではあるものの、そこに辿りつくまでが大変です。
また、自由度が高すぎて最初に何から設定していけばいいのか分かりません。
そこでオススメなのがLazyVimです。
今回はNeovimの概要と、私が最初にインストールしたLazyVimについてまとめます。
Neovim

NeovimはVimのフォーク(派生)プロジェクトで、Vimの操作感を引き継ぎつつ、最近の開発環境に合わせて拡張しやすくしたエディタです。
Vimとの主な違いは下記の通りです。
| 機能 | Vim | Neovim |
|---|---|---|
| 設定言語 | Vimscript中心 | Lua + Vimscript |
| 非同期処理 | 限定的 | 標準対応 |
| LSPクライアント | プラグインが必要 | 組み込み |
| 設定ファイル | ~/.vimrc | ~/.config/nvim/init.lua |
| Vimプラグイン互換 | 対応 | 対応(後方互換あり) |
大きな特徴として設定に「Lua」というスクリプト言語を使える点と、プラグインの数が豊富な点があげられます。
Vimプラグインの大半がそのまま使える上に、Neovimでしか使えないプラグインもあるため、Vimに比べるとプラグインが豊富です。
しかし、NeovimをインストールしただけではVimと大差ない見た目のエディタが起動するだけです。
実用的な環境にするにはプラグインやカスタマイズが必要になります。
Neovimのインストール
インストール方法はいくつか用意されていますが、macOSではHomebrewでインストールできます。
brew install Neovim起動コマンドはvimではなくnvimです。
現在のディレクトリを開くなら下記のようにします。

nvim .これで現在のディレクトリをNeovimで開けます。

Nerd Fontを入れておく

プラグイン入りのNeovim環境では、アイコン表示のためにNerd Font系フォントが必要になることが多いです。
Nerd Fontとは開発者に特化したフォント集のことで、オープンソースの有名なプログラミング用フォントに、Font Awesome・Devicons・Material Icons・Octiconsなどのアイコンフォントを統合したものです。
1つのフォントでターミナルやエディタ上のアイコン表示に使えます。
これが入っていないと、ファイルツリーやステータスラインのアイコンが正しく表示されません。
私の場合はJetBrainsMono Nerd Fontを使っています。
Nerd Fontsサイトのダウンロードページにさまざまなフォントが用意されているので、好きなものを使うようにしましょう。

インストール後はターミナルアプリのフォント設定でJetBrainsMono Nerd Fontを指定します。
Ghosttyの場合は設定ファイルに下記のように記述してフォントを指定します。
config.ghosttyfont-family = "JetBrainsMono Nerd Font"その他Ghosttyの環境設定に関しては過去記事をご覧ください。
LazyVimを使う

Neovimはゼロから設定しようとするとかなり手間がかかります。
そこで最初の入口として使いやすいのが「LazyVim」です。
別のアプリというわけではなく、Neovimの設定やプラグインがまとまったスターターキットのようなものです(ディストリビューションと呼びます)。
LazyVimには下記の機能が最初から揃っています。
- LSPによるコード補完・定義ジャンプ・エラー表示
- Tree-sitterによる高精度なシンタックスハイライト
- ファジーファインダーによるファイル・文字列検索
- ファイルエクスプローラー
- Git連携
- フォーマッター・リンター
- ステータスラインやインデントガイド
同じ設定済みディストリビューションとして有名なAstroNvimもありますが、この辺りは好みの問題かなと思います。ひとまず最初の一歩として何らかのディストリビューションを使うのが良さそうです。
LazyVimのインストール
既存の設定がある場合はバックアップしてから、スターターテンプレートをクローンします。
# 既存の設定をバックアップ
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
# スターターテンプレートをクローン
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 自分の環境用に.gitフォルダは削除する
rm -rf ~/.config/nvim/.git
# 初回起動
nvim初回起動時にプラグインが自動でインストールされるので、完了するまで少し待ちます。

インストールが完了したら「:exit」と入力してenterすると、設定モーダルが閉じてホーム画面のような表示になります。

それぞれ先頭の文字を入力するとそのアクションができます。例えば新規ファイルを作成したい場合は「n」を押します。
実際にファイルを開くと下記のような表示になります。
通常のVimやNeovimだとかなり簡素な画面ですが、LazyVimを入れるといきなり最初の段階からここまで設定された状態になります。

ちなみにサイドバー(ファイルエクスプローラー)は「space → e」で開閉できます。
リーダーキー
Vimには「リーダーキー(<leader>)」と呼ばれる概念があります。
自由にコマンドを割り当てたり、「リーダーキーを押した後に別のキーを押すと特定のアクションを実行させる」といった使い方もできます。
Vimのデフォルトのリーダーキーは\(バックスラッシュ)ですが、LazyVimの場合はspaceになっています。
spaceの方が押しやすいですし、押すとwhich-key.nvimのポップアップが表示され、使えるキーバインドを確認できます。
キーバインド
暗記しなくてもポップアップが表示されるので、それを頼りながら使うのがオススメです。
主なキーバインドは下記の通りです。
| キー | 機能 |
|---|---|
| space → space | ファイル検索 |
| space → e | ファイルエクスプローラーを開く |
| space → / | grep検索 |
| space → bd | バッファを閉じる |
| shift + h / shift + l | 前後のバッファを切り替える |
| gd | 定義へジャンプ(LSP) |
| K | ホバー情報を表示(LSP) |
| space → ca | コードアクション(LSP) |
| space → cr | シンボルのリネーム(LSP) |
| space → gb | Git blame を表示 |
Extrasで機能を拡張する
LazyVimには「Extras」という仕組みがあり、言語サポートやツール連携を個別に有効化できます。
有効化するには、Neovim上で:LazyExtrasを実行するとモーダルのような画面が開き、インストールしたい言語があればカーソルを移動させて「x」を押せばインストールや有効・無効の切り替えができます。
しかし、Extrasの中にはまだ安定していないものもあるので、有効にした後に動作がおかしくなった場合は一度無効にして確認しましょう。
私の場合は全部一気に設定するのではなく、使いながら都度Extrasで必要な言語サポートを足しています。
閉じたい場合は「:exit」と入力してenterしましょう。
カスタマイズ
LazyVimのカスタマイズは~/.config/nvim/lua/plugins/にLuaファイルを追加して行います。
ファイル名は任意で、returnでプラグインの設定テーブルを返す形式です。

ファイルごとに設定を分けられるので、後から管理しやすいのが良いところです。
テーマを変更する
LazyVimのデフォルトテーマはTokyo Nightですが、私の場合はOne Dark系の配色が好みです。
いくつか試して下記が好みだったので、この配色を採用しています。
変更するには~/.config/nvim/lua/plugins/theme_onedarkpro.luaに下記設定ファイルを追加します。
theme_onedarkpro.luareturn {
{
"olimorris/onedarkpro.nvim",
priority = 1000,
config = function()
require("onedarkpro").setup({
theme = "onedark",
})
vim.cmd("colorscheme onedark")
end,
},
}これでNeovimを開き直すと、インストールされて配色が変わります。

まとめ
Neovimを触ってみたい場合は、まずLazyVimをそのままインストールして使い始めるのがオススメです。
ただ、どんなディストリビューションを使うにしてもVimの操作そのものに慣れる必要はあります。
軽量なエディタが欲しいだけなら過去に紹介したZedの方が手軽ですし、Neovimはキーボード中心の理想のエディタを育てることに魅力を感じる人向けだと思います。
私自身Vimの操作はまだまだ練習中ですが「ターミナル上でここまでできるようになるのか!」という驚きがありますし、私の場合はLazyVimきっかけでVimの操作に本腰を入れて取り組もうと思えました。






iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Vue.jsを使う人が最低限導入しておきたいVisual Studio Codeの拡張機能
Visual Studio Codeで英単語のスペルチェックをしてくれる拡張機能「Code Spell Checker」
Visual Studio Codeで連番を入力する拡張機能「vscode-input-sequence」
W3 Total Cacheをレスポンシブデザインのテーマで使用する時の注意ポイント!!【WordPress】
ブログに見出しを設置できるjQueryプラグイン「TOC | jQuery Table of Contents」
Visual Studio Codeのファイル横に表示されるファイルアイコンのテーマまとめ
CSSのz-indexの確認や管理を便利にする方法
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
Vue CLIでGA4を導入する方法
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する