WebDesigner's Memorandumウェブデザイナーの備忘録

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

ターミナル上でそのままの流れでファイル編集をしたい場合、候補に上がってくるのがNeovimです。
ただ、Neovimはデフォルトの状態だと「これデフォルトだとできないの?Visual Studio Codeならあるのに……」というものが多いです。

そこから設定やプラグインを積み重ねていって自分の理想のエディタにしていくのが醍醐味ではあるものの、そこに辿りつくまでが大変です。
また、自由度が高すぎて最初に何から設定していけばいいのか分かりません。

そこでオススメなのがLazyVimです。
今回はNeovimの概要と、私が最初にインストールしたLazyVimについてまとめます。

Neovim

NeovimはVimのフォーク(派生)プロジェクトで、Vimの操作感を引き継ぎつつ、最近の開発環境に合わせて拡張しやすくしたエディタです。
Vimとの主な違いは下記の通りです。

機能VimNeovim
設定言語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を入れるといきなり最初の段階からここまで設定された状態になります。

ちなみにサイドバー(ファイルエクスプローラー)は「spacee」で開閉できます。

リーダーキー

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

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね