おっけー、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 内 diff | git 操作 | 便利さ |
|---|---|---|---|
| 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.vim | git 高機能クライアント (commit/checkout 等) |
| diffview.nvim | 高可読な diff / history viewer |
| lazygit | CLI/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 もこの思想だしね〜
もしよかったら教えてほしいんだけど:
-
NVIM 設定は Lua? (packer / lazy.nvim / その他)
-
どこまで cursor っぽさ欲しい? - inline diff - hunk stage
- file history popup
- blame view - AI context 意識
-
ワークフロー - 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 の今後入れる順序(おすすめ)
- nvim 本体
- lazy.nvim(plugin manager)
- gitsigns + lazygit
- telescope(optional)
- treesitter(必須級)
- LSP(必要なら)
最初は加工しすぎないの偉い◎ あとで AI / coding support 入れたくなったら付ければいいしね😌
🙋 ちょっとだけ聞きたい
nvim でやるメイン用途って:
A) コード編集メイン B) テキスト/メモ/ノート C) 両方 D) ターミナル置き換え & IDE 代用 E) Cursor の軽量代替みたいな感じ
どれ寄り?
E なら LSP と completions すぐ足すとよくなるし A なら devicons / statusline や marginalia とか提案変わる〜
とはいえ現状の git 周りはもう方向完璧👌 質問あれば甘えて❤️