neovim config

July 24, 2026 · View on GitHub

English | 简体中文 | 日本語 | Français | 한국어

Lua で書かれた、個人用のモダンな Neovim 設定。プラグイン管理には lazy.nvim を使用しています。ネイティブ LSP、 Treesitter、Telescope、Catppuccin テーマを同梱し、Web および Python 開発向けに チューニングしてあります。

screenshot

特徴

  • 遅延読み込み — lazy.nvim によるプラグイン管理。再現性のある構築のため lazy-lock.json をコミット
  • 🧠 ネイティブ LSPnvim-lspconfig + mason.nvim。サーバーとツールを自動 インストール
  • 補完blink.cmp、高速でモダンな 補完エンジン
  • 🌳 Treesitter — シンタックスハイライトとインクリメンタル選択、さらに Treesitter ベースのテキストオブジェクト
  • 🔭 Telescope — ファイル、ライブ grep、LSP シンボル、todo のあいまい検索
  • 🎨 Catppuccin テーマ、lualine ステータスライン、alpha ダッシュボード、 which-key ヒント、インデントガイド
  • 🧹 保存時のフォーマットと lintconform.nvim(prettier / stylua / isort / black)と nvim-lint(eslint_d / pylint)
  • 💾 自動セッション — プロジェクトディレクトリごとにワークスペースを復元
  • 🔧 gitsignslazygit による Git 連携

必要環境

  • Neovim 0.10 以上
  • git
  • Nerd Font(アイコン用。ターミナルで設定済みであることを前提とします)
  • トゥルーカラー対応ターミナル(iTerm2、WezTerm、Kitty など)—— termguicolors に必要
  • ripgreprg)—— Telescope のライブ grep に必要
  • Node.js —— いくつかの LSP サーバーとフォーマッター(prettier など)が依存

インストール

git clone git@github.com:dofy/nvim.git ~/.config/nvim

その後 Neovim を起動します:

nvim

初回起動時に lazy.nvim が自身をブートストラップし、すべてのプラグインを自動的に インストールします。LSP サーバーとツールは Mason がバックグラウンドで インストールします。

  • :Lazy でプラグインのインストール / 更新 / クリーンアップ
  • :Mason で LSP サーバー、フォーマッター、linter を管理
  • <Space>(leader キー)を押してしばらく待つと、利用可能なキーバインドが表示されます
  • g? でキーバインド画面を表示

ディレクトリ構成

init.lua
├── lua/custom/core/
│   ├── options.lua     # vim.opt の設定
│   └── keymaps.lua     # 基本キーマップ(leader = <Space>)
├── lua/custom/lazy.lua # lazy.nvim のブートストラップ + プラグイン読み込み
└── lua/custom/plugins/
    ├── init.lua        # 基本依存(plenary、vim-tmux-navigator)
    ├── lsp/
    │   ├── mason.lua       # Mason + mason-lspconfig + ツールインストーラー
    │   └── lspconfig.lua   # nvim-lspconfig + LspAttach キーマップ
    └── *.lua           # プラグインごとに 1 ファイル

プラグインを追加するには、lua/custom/plugins/<name>.lua を作成し、 lazy.nvim の spec テーブルを返します —— 自動的に読み込まれます。

プラグイン

カテゴリプラグイン
補完blink.cmp
LSPnvim-lspconfig、mason.nvim、mason-lspconfig、mason-tool-installer
シンタックスnvim-treesitter、nvim-treesitter-textobjects
ファイルと検索nvim-tree、telescope.nvim
フォーマットと lintconform.nvim、nvim-lint
UIcatppuccin、lualine、alpha、dressing、indent-blankline、which-key
編集autopairs、substitute.nvim、todo-comments、trouble.nvim
Gitgitsigns、lazygit
セッションとその他auto-session、wakatime

キーマップ

leader キーは <Space> です。以下はクイックリファレンスです。<leader> または g を押してしばらく待つと、which-key が全リストを表示します。

ウィンドウとタブ

キー動作
<leader>sv / <leader>sh垂直 / 水平分割
<leader>se / <leader>sx分割を均等化 / 分割を閉じる
<leader>to / <leader>txタブを開く / 閉じる
<leader>tn / <leader>tp次の / 前のタブ
<leader>tf現在のバッファを新しいタブで開く
<leader>nh検索ハイライトを消去
jk(挿入モード)挿入モードを終了

検索(Telescope)とエクスプローラー

キー動作
<leader>ffカレントディレクトリでファイル検索
<leader>fr最近使ったファイル
<leader>fsカレントディレクトリでライブ grep
<leader>fcカーソル下の文字列を grep
<leader>fttodo を検索
<leader>eeファイルエクスプローラーの切り替え
<leader>ef現在のファイルに対してエクスプローラーを切り替え
<leader>ec / <leader>erエクスプローラーを折りたたむ / 更新

LSP

キー動作
gd / gR定義 / 参照
gD / gi / gt宣言 / 実装 / 型定義
Kホバードキュメント
<leader>caコードアクション
<leader>rnシンボルのリネーム
<leader>d / <leader>D行 / ファイルの診断
[d / ]d前の / 次の診断
<leader>rsLSP を再起動

編集

キー動作
s + モーション / ss / Sモーション / 行 / 行末まで置換
s(visual)選択範囲を置換
<leader>foファイルまたは範囲をフォーマット
<leader>lllint を実行
<leader>wr / <leader>wsセッションを復元 / 保存

LSP とフォーマット

LSP サーバーmason-lspconfig により自動インストール):ts_lsdenolshtmlcsslstailwindcsssveltelua_lsgraphqlemmet_lsprismalspyright

ツールmason-tool-installer により自動インストール):prettierstyluaisortblackpylinteslint_d

フォーマット —— conform.nvim、保存時に実行(手動:<leader>fo):

  • JS / TS / CSS / HTML / JSON / YAML / Markdown / GraphQL → prettier
  • Lua → stylua(2 スペースインデント)
  • Python → isort + black

Lint —— nvim-lint、入力 / 保存 / 挿入モード終了時に実行(手動:<leader>ll):

  • JS / TS / Svelte → eslint_d
  • Python → pylint

ライセンス

MIT