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の操作に本腰を入れて取り組もうと思えました。






gulp 4.0から新しく加わったseriesとparallelについての備忘録
Nuxt.jsで「Classic mode for store/ is deprecated and will be removed in Nuxt 3.」のエラーメッセージが表示される場合の対処法
WordPressで既に公開済みの記事の更新を、指定した日付に反映する方法「PublishPress Revisions」
webpackでTop-Level Awaitを使用して、一番上位でもawaitを使えるようにする方法
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
サーバーのアップロードファイルの最大容量の確認と変更方法
WordPress5.5のサイトマップ機能を無効にする
Vue CLIでの画像パスの指定方法・配置場所まとめ
WordPressで「現在メンテナンス中のため、しばらくの間ご利用いただけません。」の状態でログインできなくなった場合の対処法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Path Finder 9がリリース!シェルフ機能が復活してモジュールの利用が更に便利に!
MacWinZipperでWindowsでも文字化けしないZipフォルダの作り方
Webサイト全体をキャプチャするならFull Page Screen Captureがおすすめ
使いやすくてキレイなmacOSのRSSリーダー「Reeder 3」
iTerm2でキーボードを使った操作を設定できる環境設定の「Keys」タブ
テキストエディタをAtomからVisual Studio Codeに移行しました
Google Driveでフォルダのコピーをする方法
Fantastical 2 for Macでスムーズにカレンダーの登録を行う
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?