🎁

Nvchadで始めるNeovim生活🎄

December 06, 2024

はじめに

これは ITソルーション室 Advent Calendar 2024 の12/6の投稿になります! 他の方の記事も上記リンクから読めますのでよろしければ!

前書き

😁 …Neovim 気になりませんか?

🙍 使ってみたいけど、真っ黒い画面で使えるようになるまでにハードルが高そう…

😁…なるほど。私も初めはそう思っていました… そう、Nvchadに出会うまでは…

NvchadはNeovim用のPluginやキーバインド等々全部入りのテンプレートになります。 各種プラグインやキーバインドの設定がある程度設定されているため、セットアップも簡単にNeovimを利用できるようになります。

私が利用している環境は以下の動画のようになります!(Nvchadのテンプレートから少しカスタマイズがされています。)

Nvchadを使ってみる 💻

公式のDocsはこちら

実行環境

  • Neovim v0.10.2
  • macOS Sequoia v15.1.1
  • terminal: kitty v0.37.0
  • terminal font: Cica

Nvchadのセットアップ

git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

初回起動の際に自動でNvchadのプラグインがLazy.vimによって自動でインストールされます。

テーマの切り替え

<leader> + th でテーマスイッチャーからテーマを切り替えることができます。(<leader>はデフォルトでスペースキーです) 気まぐれにテーマを手軽に切り替えられます🥰

Neovim内ターミナルの使用

<option> + i でフローティングターミナルの起動
<option> + h でNeovim下部にターミナルの起動
<leader> + v で分割ターミナルの起動
ができるようになっています。

個人的にフローティングターミナルがお気に入りで、基本的なターミナルの操作はこのフローティングターミナルで行い、ローカルサーバーの起動などといった作業中に常に起動しておきたいスクリプトはNeovim下部に起動したターミナルで行うというような使い分けをしています❣️

LSP周り

NvchadにはLSP周りの設定もある程度設定されており、mason.nvimを使ってLanguage Server等をインストールすることによって、動画のようにLSPで対応しているような

  • 補完
  • 定義ジャンプ
  • エラーに対する指摘

などかなりリッチな機能を簡単に利用することができます。

Nvim-tree

nvim-tree

Nvchadはデフォルトでnvim-treeというNeovim用のファイルエクスプローラーが利用できるようになっています。 Ctrl + n でnvim-treeのトグルができます。

キーバインドのチートシート

Nvchadのチートシート

たくさんあるキーバインドがわからない… Nvchadなら全てのキーバインドを覚える必要はありません。 <leader> + ch のみ覚えておけばいつでも上記のようなキーバインドに関するチートシートを確認することができます。 なお、このチートシートは自身で設定したキーバインドについても自動で項目に追加してくれます😆

私流Nvchadカスタマイズ 📎

ここからは私が行っているNvchadのカスタマイズを紹介します。

スタートページのカスタマイズ

nvchadのスタート画面

スタートアイコンやtelescope(Neovimのファジーファインダー)へのショートカット等を表示させています。

キーバインドのカスタマイズ

mappings.lua
require "nvchad.mappings"

local map = vim.keymap.set

-- ### Insert Mode
map("i", "jj", "<ESC>")

map(
  "i",
  "<C-y>",
  'copilot#Accept("<CR>")',
  { noremap = true, silent = true, expr = true, script = true, replace_keycodes = false }
)

-- ### Normal Mode
map("n", "<leader>h", "^", { desc = "move beginning of line" })
map("n", "<leader>l", "$", { desc = "move ending of line" })

map("n", "<leader>q", "<cmd>q!<CR>", { desc = "quit" })

map("n", "<C-f>", function()
  require("conform").format { lsp_fallback = true }
end, { desc = "formatting" })

map("n", "<leader>t", '<cmd>LazyGit<CR>', { desc = "lazygit" })

-- ### Visual Mode
map("v", "v", "$h", { desc = "行末まで選択" })

-- ### Terminal Mode
map("t", "qq", vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true))

Nvchadのデフォルトのキーバインドでもある程度使用できますが、より利便性を高めるために、キーバインドを設定しています。 全てにキーバインドを設定するのではなく、変えたいところだけ変えられるのはNvchadのようなテンプレートを利用している特権ですね👍

copilot.vimの導入

Githubが提供するGithub CopilotをNeovim内で利用できるプラグインを使用しています。 思考のスピードで実装を提案してくれるので、効率爆上がりで重宝しています🥰

Markdown-Preview.nvimの導入

Neovim上で編集しているMarkdownファイルのプレビューをブラウザ上でリアルタイムにプレビューしてくれるプラグインになります。 実際にこの記事もNeovim × Markdown-Preview.nvimでプレビューをみながら執筆しています。

おわりに…

いかがでしたでしょうか? 実はNvchadのようなNeovimのConfigテンプレートは他にも

などが開発されています。

自分で0から設定を構築するのも楽しいですが、意外とハードルが高かいところもあるので… 素晴らしいテンプレートを活用しながら、Neovimの世界に飛び込んでみるのはいかがでしょうか…