LazyVimの紹介
本記事は株式会社ココナラ Advent Calendar 2024 15日目の記事です。
はじめに
はじめまして、株式会社ココナラでフロントエンドエンジニアをしている@tm_1219と言います。
今回はNeovimを布教するための記事を書きます。
なぜ今Neovimを選ぶのかというと、手をホームポジションから動かさずに各種操作をキーボードで行うことができるからです。
Neovimといえば環境構築が難しいイメージがあり、Vim操作を覚える学習コストも高いのでそれらを理由に諦めた方も少なくないでしょう。
私もその中の一人で、Neovim使いに憧れてはいますが、VSCodeをVimプラグインで使う程度でした。
本記事では、Neovim使いに憧れているけど挫折した方、まだチャレンジできていない方などを対象に比較的とっつきやすいLazyVimを紹介します(Vim操作自体の解説は含みません)。
私もまだ学習中で使いこなせていないため、本記事の執筆を通して自身もさらに理解を深められればと思います。
ちなみにVim Advent Calendar 2024もあるので良かったらそちらも見てみてください。
LazyVimとは
LazyVimには便利なプラグインがデフォルトで入っており、環境構築の手間を省くことができます。
また公式ドキュメントの情報が豊富な点に加えて、入力したキーに応じてエディタ上に各種操作ガイドが表示されるため、慣れていない状態でも扱いやすいです。
ホーム画面

ガイド例

LazyVimのはじめかた
環境構築
Neovimのインストール
Rosetta環境でNeovimをインストールしてしまうとうまく動かないことがあるので、ARM64環境でNeovimをインストールしましょう。
brew install neovim
Rosetta環境の場合
arch -arm64 brew install neovim
iTerm2のインストール
MacOS標準のターミナルだとNerdFontに対応しておらずいくつかのアイコンがうまく表示されないため、iTerm2などのターミナルを使うことをオススメします。
brew install iterm2
NerdFontのインストール
以下サイトから好きなNerdFontをダウンロードしてターミナル側でフォント設定を行います。
LazyVimのインストール
以下の手順を参考にインストールします。
checkhealthコマンドでエラーチェック
インストールできたら起動後に:checkhelthコマンドでエラーがないかチェックしましょう。
私の環境ではいくつかエラーが発生していたので、もし同じエラーが出ていたらそれぞれ対処していきましょう。
treesitter
treesitterにおいて以下のようなエラーが発生していました。
ERROR bash(highlights): ....10.1/share/nvim/runtime/lua/vim/treesitter/language.lua:112: Failed to load parser for language 'bash': uv_dlopen: no error
...
こちらはRosetta環境でNeovimをインストールしていたことが原因だったので、ARM64環境でNeovimをインストールし直しましょう。
luarocks
以下のようなエラーが発生したので、brew install luarocksを実行しました。
ERROR {/Users/hoge/.local/share/nvim/lazy-rocks/hererocks/bin/luarocks} not installed
ripgrep
以下のようなwarningが発生しgrepがうまく動かなかったため、brew install ripgrepを実行しました。
External Tools
71 - WARNING ripgrep not available
一通り対応したら再度:checkhealthコマンドを実行してエラーが解消されていることを確認しましょう。
基本的な使い方
公式ドキュメントにあるキーマップを参考に操作していきます。
キーマップにある表記は以下のキーに対応しています。
<leader> →Spaceキー
<C> →Ctrlキー
<A> →Optionキー
<S> →Shiftキー
例)
・<leader>e →Spaceキーを押した後にeキーを押す
・<C-h> →Ctrlキーとhキーを同時に押す
ファイラー
<leader>eでファイラーをトグル表示することができます。
ファイラーを開いた後、j, kで上下移動、l or Enterでファイルorディレクトリを開きます。
<C-h>、<C-l>でファイラーとエディタ間を移動することができます。
複数ファイルを開いた場合は[b、]bでバッファ間を移動できます。

他のIDEではマウスで調整することの多いウィンドウ幅、高さの調整もそれぞれ<C-Left>,<C-Right>,<C-Up>,<C-Down>で行うことができます。
ファイル検索
<leader>fでファイル名の曖昧検索ができます。

全検索+置換
<leader>gで全検索を行うことができます。

<leader>srで全検索+置換も行うことができます。

LSP(Language Server Protocol)
各種言語用のコード補完やシンタックスハイライトを行うための機能です。
今回は一例としてVue用のLSPを導入してみます。
<leader>cmでmason(LSPマネージャ)を開きます。
<C-f>でvueと入力して見つかったvue-language-serverを選択し、iでインストールを行います。


Neovim再起動後に任意のvueファイルを開き、v-などと入力すると各種サジェストと説明が表示されるようになります。

Formatter
コード整形を行うためのFormatterに関しては、LSPのインストール後にファイル保存を行うと自動で効くようになっています。
カスタマイズが必要であれば適宜Pluginや設定ファイルを用意することで柔軟に対応できるようです。
保存前

保存後

ESlint
※プロジェクト側にESlintがインストールされていることを前提とします。
こちらはエディタ上に構文エラーなどを表示するための機能です。
LazyVim Extrasのメニューからlinting.eslintを選んでxでインストールします。


Neovim再起動後にvueファイルを開くとエラーが表示されるようになっています。

Git
Git操作に関してはLazygitが付属しているため、こちらを利用するのがオススメです。
<leader>ggでNeovim上でLazygitを起動し、各種Git操作を行うことができます。
詳しい操作方法はこちら。

Github Copilot/Chat
GitHub Copilot/Chat用のプラグインもあり、こちらもLazyVim Extrasからai.copilotとai.copilot-chatをそれぞれインストールすることで利用できます。


プラグインのインストール後にNeovimを再起動すると、ワンタイムコードとGitHubのログインURLが表示されるため、そちらでコードを入力すると連携が完了します。
その後エディタで入力を行うとCopilotがサジェストしてくれるようになります。

Copilot Chatに関しては<leader>aaを押すとチャット画面が表示されるのでそこで会話することができます。

さいごに
本記事では一部プラグインしか紹介できませんでしたが、上記で紹介した以外にも便利なプラグインがたくさんインストールされています。
また、追加でプラグインを入れたり細かなカスタマイズを行うことも可能です。
本記事でNeovimに少しでも興味を持った方はぜひ一度触ってみてください。
明日は@hideki_okawaさんによる、「ローコードで社内管理画面を構築しよう」です。
ココナラでは積極的にエンジニアを採用しています。
採用情報はこちら。
カジュアル面談希望の方はこちら。
Discussion