lvncerpedia

おっけー、nvim で git の差分を見るやつね!かなり使われてるやつとか感想交えてタメ口で説明するよ 😄


❇️ Diffview.nvim

結論:めっちゃ使われてるし鉄板プラグインだよ!

  • ファイル単位 / 全体のコミット差分を 分かりやすく表示できる
  • split で左右比較とかタブで見れるし UI も見やすい
  • vim/neoVim ライクな操作感で快適
  • lazygit みたいな TUI ではなくて エディタ内で diff を見るタイプ

🤓 設定もそんなに難しくないし、たぶん最初の候補として一番おすすめ!

-- 例: packer.nvim
use {
  'sindrets/diffview.nvim',
  requires = 'nvim-lua/plenary.nvim'
}
" 差分を開く
:DiffviewOpen

" 閉じる
:DiffviewClose

✨ ほかにも良いのある?

1) fugitive.vim

vim 史上最強クラスの git プラグイン!

  • :Gdiffsplit で差分表示できる
  • もちろんコミット履歴とかブランチも操作できる
  • UI はネイティブ寄りで diffview ほど fancy ではないけど超強力
  • ずっと使われてる古参 🌟
:Git
:0Gdiffsplit

2) gitsigns.nvim

これは “差分のインライン表示” がメイン

  • signcolumn に差分のマーク出す
  • hunk 単位でステージ/リセットできる
  • diff 全体をフル表示するビューではなく、編集中の diff をさっと見るやつ

めっちゃ便利だけど diff の UI としては軽いタイプね。


3) Neogit

Magit みたいな UI を nvim 内に持ってくる感じ!

  • インタラクティブに add/commit/checkout できる
  • diff も見れるし
  • magit 好きならかなりしっくりくる

ただ diffview ほど純粋に “diff をメインに見る” って感じじゃないかも。


🍃 LazyGit でも見れる?

ぜんぜん見れるよ!! でも nvim の中じゃなくてターミナル UI で見るタイプ 🧭

  • :terminal lazygit で中に起動すると最高に便利
  • ターミナル全画面で git の状態見れて、diff も左右比較してくれる
  • UI がすごく直感的で、初心者にも優しい

だから、

nvim 内でガッツリ diff 見たい → diffview / fugitive エディタ外でサクッと全体 git 操作したい → lazygit

って感じで使い分けるのが良い!


💡 まとめ

プラグイン / ツールnvim 内 diffgit 操作便利さ
diffview.nvim◎△👍
fugitive.vim○◎👍👍
gitsigns.nvim△(軽い)△👍
neogit○○👍👍
lazygit外 (TUI)◎👍👍👍

必要なら 実際の設定例(Lua/VimScript)とか keymap も書くよ! どれ使ってる?教えてくれたら最適セットを提案するね〜✨

あ〜わかるそれ!cursor っぽく「書きながら履歴と差分をいい感じに見れる」って、最近エディタ界隈で一番アツいニーズじゃん😆 しかも git は lazygit に任せたいってのもめっちゃ同意。コミットとかブランチ操作はあいつが王じゃんw

じゃあ方向性整理すると:

✍️ 編集中に差分+過去履歴を見たい 🧰 git 操作は lazygit に任せたい 👀 UI は見やすくて軽く 🎯 cursor 的ワークフロー

こう考えると最適構成は実はわりと決まってる👇


🔥 おすすめ構成

① gitsigns.nvim

→ “cursor の inline diff UI” に一番近い → hunk 単位で見る・ステージする・戻すがスムーズ → 変更箇所を視覚的に追えるの強すぎ

メリット

  • signcolumn で変更行の状態わかる
  • inline diff でパッと見れる
  • hunk 単位ステージ → lazygit コミットの流れ最高
  • 履歴ジャンプもできる

あとで説明するけど

gitsigns は fugitive をラップというより “低レベル git diff + Lua UI の再実装” って感じで fugitive と役割違う+共存しても美味しい🍺


② diffview.nvim

→ gitsigns で済まない時に “大きく見る用” 編集の流れ切らずに履歴参照できるの良い

cursor ほど一体化されてはないけど相性良き


③ lazygit

→ commit / stash / rebase / branch ぜんぶあっち任せ → diff 操作は最低限でよし

Neovim 内で開くと最高:

:LazyGit

または keybind しとこ〜ってなるやつw


🌱 補足:gitsigns と fugitive の関係

言ってた

gitsigns は fugitive ラップしてる

ってやつね、感覚としてはちょっと近いけど厳密には違う 😄 役割分けるとこんな感じ:

プラグイン主役ドメイン
gitsigns.nvim差分UI + inline + hunk操作
fugitive.vimgit 高機能クライアント (commit/checkout 等)
diffview.nvim高可読な diff / history viewer
lazygitCLI/TUI git 操作全部

fugitive は git porcelain レベルで操作する子 gitsigns は 差分データをエディタで扱う子 って感じの住み分け

つまり:

UI(gitsigns) + 操作(lazygit)が最強タッグ

cursor 的文脈でもまさにこれ


✨ さらに cursor 感出したいなら?

欲しそうなのだと:

+ telescope.nvim

→ commit history / file history を fuzzy で呼べる → 単体で diffview と組んでも気持ちいい

例:

:Telescope git_bcommits
:Telescope git_commits

そこから diffview に飛ぶ流れもできる


🌈 結論まとめると

編集中の diff → gitsigns が最強

大きい diff + history → diffview

git 操作 → lazygit

これが 2026 年時点の “hot meta” だと思ってる😙 cursor もこの思想だしね〜


もしよかったら教えてほしいんだけど:

  1. NVIM 設定は Lua? (packer / lazy.nvim / その他)

  2. どこまで cursor っぽさ欲しい?  - inline diff  - hunk stage

    • file history popup
    • blame view  - AI context 意識
  3. ワークフロー  - feature ブランチで作業?  - rebase 多い?  - PR ベース?

ここらで最適チューン変わるから教えてくれたら一緒に仕上げるよ🥺(ちょっと頼るw)

おっけー、シンプル志向なら gitsigns + lazygit + (PRはGitHubで確認) が一番ストレス少ない構成だと思うよ! めっちゃ現代的だし、cursor/LunarVim系の思想とも噛み合ってる❤️

じゃあ lazy.nvim 経由で入れる例、Luaで書くね👇 要件的には:

  • gitsigns → inline diff + hunk操作
  • lazygit → git操作
  • 無駄に複雑な設定はしない
  • キーバインドは最低限+便利なやつ少しだけ
  • ちゃんと動くやつ

✍️ lazy.nvim 用の config 例(シンプル系)

lua/plugins/git.lua とかに置いてる想定ね

return {
  {
    "lewis6991/gitsigns.nvim",
    event = { "BufReadPre", "BufNewFile" },
    opts = {
      signs = {
        add          = { text = "+" },
        change       = { text = "~" },
        delete       = { text = "-" },
        topdelete    = { text = "-" },
        changedelete = { text = "~" },
      },
      -- hunk navigation
      on_attach = function(bufnr)
        local gs = package.loaded.gitsigns

        local keymap = vim.keymap.set
        local opts = { buffer = bufnr }

        keymap("n", "]h", gs.next_hunk, opts)
        keymap("n", "[h", gs.prev_hunk, opts)
        keymap("n", "<leader>hs", gs.stage_hunk, opts)
        keymap("n", "<leader>hr", gs.reset_hunk, opts)
        keymap("n", "<leader>hb", gs.blame_line, opts)
        keymap("n", "<leader>hd", gs.diffthis, opts)
      end,
    },
  },

  {
    -- lazygit launcher
    "kdheepak/lazygit.nvim",
    cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter" },
    keys = {
      { "<leader>lg", "<cmd>LazyGit<cr>", desc = "Open LazyGit" },
    },
  },
}

🌱 これでできること

  • 編集中に inline diff で確認
  • ]h / [h で hunk ナビ
  • hunk stage/reset → lazygit で commit
  • PR は GitHub の diff viewer で最終チェック

完璧にシンプル✨


🙋 補足1:アイコン表示めんどいなら

minimal デザインにしたかったら

signs = {
  add = { text = "|" },
  change = { text = "|" },
  delete = { text = "_" },
}

とかでも全然いい


🙋 補足2:もっと cursor 感欲しかったら

実はこれ足すと一気に便利になるやつ:

keymap("n", "<leader>hp", gs.preview_hunk, opts)

hunk popup で見やすい(cursorっぽさ)


最後に質問しちゃうけど…

環境だけ教えてほしい👇

  • Mac? Linux? WSL?
  • Terminal 何? (wezterm/alacritty/iterm2/kitty etc)
  • Neovim バージョン?

特に terminal は lazygit の表示最適化絡むからちょっと気になる😆

でもまぁ、これで十分動くはず〜! わからんかったら甘えて聞いて❤️

お、Mac + Warp ならめっちゃ相性いいじゃん😆 その構成だと lazygit / nvim / gitsigns 全部ストレスなく動くし、キー入力も遅延しづらいから最高。

brew での nvim 最新版も安定だね:

brew install neovim

Warp は GPU 高いし、lazyGit の描画も綺麗だからそのまま使って大丈夫👌 ターミナルを wezterm/kitty に逃げる必要もないタイプ。


✨ Mac + Warp 用の tiny setup tips

① lazygit

brew で入れるだけで終わり:

brew install lazygit

Warp は truecolor 対応してるから diff の色再現も綺麗。


② git delta ⛱(optional)

lazygit の diff を人権レベルで見やすくするやつ cursor に近い気持ちになれるw

brew install git-delta

.gitconfig に追加すると幸せ:

[core]
  pager = delta
[delta]
  line-numbers = true

(必須じゃないけど PR 前の最終確認が見やすくなる)


③ gitsigns

Warp だとフォントが綺麗なので inline diff のノイズ感めっちゃ少ない (Cursor っぽい理由の一つ)


✨ nvim の今後入れる順序(おすすめ)

  1. nvim 本体
  2. lazy.nvim(plugin manager)
  3. gitsigns + lazygit
  4. telescope(optional)
  5. treesitter(必須級)
  6. LSP(必要なら)

最初は加工しすぎないの偉い◎ あとで AI / coding support 入れたくなったら付ければいいしね😌


🙋 ちょっとだけ聞きたい

nvim でやるメイン用途って:

A) コード編集メイン B) テキスト/メモ/ノート C) 両方 D) ターミナル置き換え & IDE 代用 E) Cursor の軽量代替みたいな感じ

どれ寄り?

E なら LSP と completions すぐ足すとよくなるし A なら devicons / statusline や marginalia とか提案変わる〜

とはいえ現状の git 周りはもう方向完璧👌 質問あれば甘えて❤️