Update nvim config: split plugins, update README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 15:19:52 +00:00
parent 762318ce88
commit aa687e1591
16 changed files with 264 additions and 101 deletions

View File

@@ -1,4 +1,18 @@
# 💤 LazyVim # Personal Neovim Config
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). My personal Neovim configuration built on [LazyVim](https://github.com/LazyVim/LazyVim).
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
## Current Setup
- **Base**: LazyVim with Gruvbox colorscheme
- **AI**: Claude Code integration (`claudecode.nvim`)
- **UI**: Snacks dashboard (custom STP banner), Which-Key (helix preset)
- **Languages**: TypeScript, Vue, Python, Go, SQL, Tailwind, Docker
- **Extras**: mini-surround, Prettier formatting, git extras
## Suggested Plugins to Add
- **vim-fugitive** or **neogit** - deeper git workflow beyond LazyVim's built-in gitsigns
- **nvim-lint** - async linting beyond what LSP provides
- **oil.nvim** - file explorer that works like a buffer (edit filesystem like text)
- **zen-mode.nvim** - distraction-free writing/coding

View File

@@ -1,25 +1,21 @@
{ {
"extras": [ "extras": [
"lazyvim.plugins.extras.ai.claudecode", "lazyvim.plugins.extras.ai.claudecode",
"lazyvim.plugins.extras.ai.copilot", "lazyvim.plugins.extras.coding.mini-surround",
"lazyvim.plugins.extras.coding.mini-surround", "lazyvim.plugins.extras.formatting.prettier",
"lazyvim.plugins.extras.editor.dial", "lazyvim.plugins.extras.lang.docker",
"lazyvim.plugins.extras.formatting.prettier", "lazyvim.plugins.extras.lang.git",
"lazyvim.plugins.extras.lang.docker", "lazyvim.plugins.extras.lang.go",
"lazyvim.plugins.extras.lang.git", "lazyvim.plugins.extras.lang.python",
"lazyvim.plugins.extras.lang.go", "lazyvim.plugins.extras.lang.sql",
"lazyvim.plugins.extras.lang.python", "lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.sql", "lazyvim.plugins.extras.lang.typescript",
"lazyvim.plugins.extras.lang.tailwind", "lazyvim.plugins.extras.lang.vue"
"lazyvim.plugins.extras.lang.typescript", ],
"lazyvim.plugins.extras.lang.vue", "install_version": 8,
"lazyvim.plugins.extras.ui.edgy", "news": {
"lazyvim.plugins.extras.util.dot", "NEWS.md": "11866"
"lazyvim.plugins.extras.util.gitui" },
], "version": 8
"install_version": 8, }
"news": {
"NEWS.md": "11866"
},
"version": 8
}

View File

@@ -16,9 +16,7 @@ vim.opt.rtp:prepend(lazypath)
require("lazy").setup({ require("lazy").setup({
spec = { spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" }, { "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import/override with your plugins
{ import = "plugins" }, { import = "plugins" },
}, },
defaults = { defaults = {

View File

@@ -0,0 +1,7 @@
return {
{
"windwp/nvim-autopairs",
event = "InsertEnter",
opts = {},
},
}

View File

@@ -0,0 +1,26 @@
return {
{
"coder/claudecode.nvim",
dependencies = { "folke/snacks.nvim" },
config = true,
keys = {
{ "<leader>a", nil, desc = "AI/Claude Code" },
{ "<leader>ac", "<cmd>ClaudeCode<cr>", desc = "Toggle Claude" },
{ "<leader>af", "<cmd>ClaudeCodeFocus<cr>", desc = "Focus Claude" },
{ "<leader>ar", "<cmd>ClaudeCode --resume<cr>", desc = "Resume Claude" },
{ "<leader>aC", "<cmd>ClaudeCode --continue<cr>", desc = "Continue Claude" },
{ "<leader>am", "<cmd>ClaudeCodeSelectModel<cr>", desc = "Select Claude model" },
{ "<leader>ab", "<cmd>ClaudeCodeAdd %<cr>", desc = "Add current buffer" },
{ "<leader>as", "<cmd>ClaudeCodeSend<cr>", mode = "v", desc = "Send to Claude" },
{
"<leader>as",
"<cmd>ClaudeCodeTreeAdd<cr>",
desc = "Add file",
ft = { "NvimTree", "neo-tree", "oil", "minifiles", "netrw" },
},
-- Diff management
{ "<leader>aa", "<cmd>ClaudeCodeDiffAccept<cr>", desc = "Accept diff" },
{ "<leader>ad", "<cmd>ClaudeCodeDiffDeny<cr>", desc = "Deny diff" },
},
},
}

View File

@@ -0,0 +1,3 @@
return {
{ "ellisonleao/gruvbox.nvim" },
}

3
nvim/lua/plugins/dap.lua Normal file
View File

@@ -0,0 +1,3 @@
return {
{ import = "lazyvim.plugins.extras.dap.core" },
}

View File

@@ -0,0 +1,16 @@
return {
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
keys = {
{ "<leader>a", function() require("harpoon"):list():add() end, desc = "Harpoon Add File" },
{ "<C-e>", function() local harpoon = require("harpoon") harpoon.ui:toggle_quick_menu(harpoon:list()) end, desc = "Harpoon Quick Menu" },
{ "<C-1>", function() require("harpoon"):list():select(1) end, desc = "Harpoon File 1" },
{ "<C-2>", function() require("harpoon"):list():select(2) end, desc = "Harpoon File 2" },
{ "<C-3>", function() require("harpoon"):list():select(3) end, desc = "Harpoon File 3" },
{ "<C-4>", function() require("harpoon"):list():select(4) end, desc = "Harpoon File 4" },
},
},
}

View File

@@ -0,0 +1,11 @@
return {
{
"OXY2DEV/markview.nvim",
ft = "markdown",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons",
},
opts = {},
},
}

View File

@@ -0,0 +1,20 @@
return {
{
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim",
"sindrets/diffview.nvim",
},
keys = {
{ "<leader>gg", function() require("neogit").open() end, desc = "Neogit" },
{ "<leader>gc", function() require("neogit").open({ "commit" }) end, desc = "Neogit Commit" },
{ "<leader>gl", function() require("neogit").open({ "log" }) end, desc = "Neogit Log" },
{ "<leader>gp", function() require("neogit").open({ "push" }) end, desc = "Neogit Push" },
},
opts = {
integrations = {
diffview = true,
},
},
},
}

View File

@@ -1,72 +0,0 @@
return {
{ "ellisonleao/gruvbox.nvim" },
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
{
"kawre/leetcode.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
},
opts = {
lang = "rust",
keys = {
toggle = { "q" }, ---@type string|string[]
confirm = { "<CR>" }, ---@type string|string[]
reset_testcases = "r", ---@type string
use_testcase = "U", ---@type string
focus_testcases = "H", ---@type string
focus_result = "L", ---@type string
},
},
},
},
-- {
-- "yetone/avante.nvim",
-- build = vim.fn.has("win32") ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
-- or "make",
-- event = "VeryLazy",
-- opts = {
-- provider = "copilot",
-- selection = {
-- hint_display = "none",
-- },
-- behaviour = {
-- auto_set_keymaps = false,
-- },
-- },
-- cmd = {
-- "AvanteAsk",
-- "AvanteBuild",
-- "AvanteChat",
-- "AvanteClear",
-- "AvanteEdit",
-- "AvanteFocus",
-- "AvanteHistory",
-- "AvanteModels",
-- "AvanteRefresh",
-- "AvanteShowRepoMap",
-- "AvanteStop",
-- "AvanteSwitchProvider",
-- "AvanteToggle",
-- },
-- keys = {
-- { "<leader>aa", "<cmd>AvanteAsk<CR>", desc = "Ask Avante" },
-- { "<leader>ac", "<cmd>AvanteChat<CR>", desc = "Chat with Avante" },
-- { "<leader>ae", "<cmd>AvanteEdit<CR>", desc = "Edit Avante" },
-- { "<leader>af", "<cmd>AvanteFocus<CR>", desc = "Focus Avante" },
-- { "<leader>ah", "<cmd>AvanteHistory<CR>", desc = "Avante History" },
-- { "<leader>am", "<cmd>AvanteModels<CR>", desc = "Select Avante Model" },
-- { "<leader>an", "<cmd>AvanteChatNew<CR>", desc = "New Avante Chat" },
-- { "<leader>ap", "<cmd>AvanteSwitchProvider<CR>", desc = "Switch Avante Provider" },
-- { "<leader>ar", "<cmd>AvanteRefresh<CR>", desc = "Refresh Avante" },
-- { "<leader>as", "<cmd>AvanteStop<CR>", desc = "Stop Avante" },
-- { "<leader>at", "<cmd>AvanteToggle<CR>", desc = "Toggle Avante" },
-- },
-- },
}

View File

@@ -0,0 +1,35 @@
return {
{
"snacks.nvim",
opts = {
dashboard = {
preset = {
pick = function(cmd, opts)
return LazyVim.pick(cmd, opts)()
end,
header = [[
███████╗████████╗██████╗
██╔════╝╚══██╔══╝██╔══██╗
███████╗ ██║ ██████╔╝
╚════██║ ██║ ██╔═══╝
███████║ ██║ ██║
╚══════╝ ╚═╝ ╚═╝
]],
-- stylua: ignore
---@type snacks.dashboard.Item[]
keys = {
{ icon = "", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
{ icon = "", key = "n", desc = "New File", action = ":ene | startinsert" },
{ icon = "", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
{ icon = "", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" },
{ icon = "", key = "c", desc = "Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" },
{ icon = "", key = "s", desc = "Restore Session", section = "session" },
{ icon = "", key = "x", desc = "Lazy Extras", action = ":LazyExtras" },
{ icon = "󰒲 ", key = "l", desc = "Lazy", action = ":Lazy" },
{ icon = "", key = "q", desc = "Quit", action = ":qa" },
},
},
},
},
},
}

View File

@@ -0,0 +1,11 @@
return {
{
"nvim-pack/nvim-spectre",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>sr", function() require("spectre").open() end, desc = "Replace in Files (Spectre)" },
{ "<leader>sr", function() require("spectre").open_visual({ select_word = true }) end, mode = "v", desc = "Replace Word (Spectre)" },
},
opts = {},
},
}

View File

@@ -0,0 +1,14 @@
return {
{
"folke/todo-comments.nvim",
event = "VeryLazy",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
keys = {
{ "]t", function() require("todo-comments").jump_next() end, desc = "Next Todo Comment" },
{ "[t", function() require("todo-comments").jump_prev() end, desc = "Prev Todo Comment" },
{ "<leader>xt", "<cmd>Trouble todo<cr>", desc = "Todo (Trouble)" },
{ "<leader>st", "<cmd>TodoTelescope<cr>", desc = "Todo" },
},
},
}

View File

@@ -0,0 +1,8 @@
return {
{
"mbbill/undotree",
keys = {
{ "<leader>cu", "<cmd>UndotreeToggle<cr>", desc = "Undotree Toggle" },
},
},
}

View File

@@ -0,0 +1,73 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
opts_extend = { "spec" },
opts = {
preset = "helix",
defaults = {},
spec = {
{
mode = { "n", "x" },
{ "<leader><tab>", group = "tabs" },
{ "<leader>c", group = "code" },
{ "<leader>d", group = "debug" },
{ "<leader>dp", group = "profiler" },
{ "<leader>f", group = "file/find" },
{ "<leader>g", group = "git" },
{ "<leader>gh", group = "hunks" },
{ "<leader>q", group = "quit/session" },
{ "<leader>s", group = "search" },
{ "<leader>u", group = "ui" },
{ "<leader>x", group = "diagnostics/quickfix" },
{ "[", group = "prev" },
{ "]", group = "next" },
{ "g", group = "goto" },
{ "gs", group = "surround" },
{ "z", group = "fold" },
{
"<leader>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
{
"<leader>w",
group = "windows",
proxy = "<c-w>",
expand = function()
return require("which-key.extras").expand.win()
end,
},
-- better descriptions
{ "gx", desc = "Open with system app" },
},
},
},
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Keymaps (which-key)",
},
{
"<c-w><space>",
function()
require("which-key").show({ keys = "<c-w>", loop = true })
end,
desc = "Window Hydra Mode (which-key)",
},
},
config = function(_, opts)
local wk = require("which-key")
wk.setup(opts)
if not vim.tbl_isempty(opts.defaults) then
LazyVim.warn("which-key: opts.defaults is deprecated. Please use opts.spec instead.")
wk.register(opts.defaults)
end
end,
},
}