Update nvim config: split plugins, update README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,18 @@
|
||||
# 💤 LazyVim
|
||||
# Personal Neovim Config
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
My personal Neovim configuration built on [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,25 +1,21 @@
|
||||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.ai.claudecode",
|
||||
"lazyvim.plugins.extras.ai.copilot",
|
||||
"lazyvim.plugins.extras.coding.mini-surround",
|
||||
"lazyvim.plugins.extras.editor.dial",
|
||||
"lazyvim.plugins.extras.formatting.prettier",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.git",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.sql",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.lang.vue",
|
||||
"lazyvim.plugins.extras.ui.edgy",
|
||||
"lazyvim.plugins.extras.util.dot",
|
||||
"lazyvim.plugins.extras.util.gitui"
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "11866"
|
||||
},
|
||||
"version": 8
|
||||
}
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.ai.claudecode",
|
||||
"lazyvim.plugins.extras.coding.mini-surround",
|
||||
"lazyvim.plugins.extras.formatting.prettier",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.git",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.sql",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.lang.vue"
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "11866"
|
||||
},
|
||||
"version": 8
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,7 @@ vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
|
||||
7
nvim/lua/plugins/autopairs.lua
Normal file
7
nvim/lua/plugins/autopairs.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
26
nvim/lua/plugins/claudecode.lua
Normal file
26
nvim/lua/plugins/claudecode.lua
Normal 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" },
|
||||
},
|
||||
},
|
||||
}
|
||||
3
nvim/lua/plugins/colorscheme.lua
Normal file
3
nvim/lua/plugins/colorscheme.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
return {
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
}
|
||||
3
nvim/lua/plugins/dap.lua
Normal file
3
nvim/lua/plugins/dap.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
return {
|
||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||
}
|
||||
16
nvim/lua/plugins/harpoon.lua
Normal file
16
nvim/lua/plugins/harpoon.lua
Normal 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" },
|
||||
},
|
||||
},
|
||||
}
|
||||
11
nvim/lua/plugins/markview.lua
Normal file
11
nvim/lua/plugins/markview.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
return {
|
||||
{
|
||||
"OXY2DEV/markview.nvim",
|
||||
ft = "markdown",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
20
nvim/lua/plugins/neogit.lua
Normal file
20
nvim/lua/plugins/neogit.lua
Normal 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,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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" },
|
||||
-- },
|
||||
-- },
|
||||
}
|
||||
35
nvim/lua/plugins/snacks.lua
Normal file
35
nvim/lua/plugins/snacks.lua
Normal 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" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
11
nvim/lua/plugins/spectre.lua
Normal file
11
nvim/lua/plugins/spectre.lua
Normal 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 = {},
|
||||
},
|
||||
}
|
||||
14
nvim/lua/plugins/todo-comments.lua
Normal file
14
nvim/lua/plugins/todo-comments.lua
Normal 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" },
|
||||
},
|
||||
},
|
||||
}
|
||||
8
nvim/lua/plugins/undotree.lua
Normal file
8
nvim/lua/plugins/undotree.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
return {
|
||||
{
|
||||
"mbbill/undotree",
|
||||
keys = {
|
||||
{ "<leader>cu", "<cmd>UndotreeToggle<cr>", desc = "Undotree Toggle" },
|
||||
},
|
||||
},
|
||||
}
|
||||
73
nvim/lua/plugins/whichkey.lua
Normal file
73
nvim/lua/plugins/whichkey.lua
Normal 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,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user