8.3 KiB
8.3 KiB
nvim config map
Lua config managed by lazy.nvim. Leader is ,, local leader is \.
Layout
init.lua— bootstraps lazy.nvim, loadsconfig/thenplugins/lua/config/options.lua—vim.optsettingslua/config/keymaps.lua— keymaps not tied to a specific pluginlua/config/autocmds.lua— autocommandslua/plugins/*.lua— one lazy.nvim spec file per topic (each file returns a plugin spec table; lazy.nvim loads every file in the directory automatically)ftplugin/*.lua— filetype-specific settings (Python, vimwiki)lua/util.lua— small helper functions (ranger(),delete_trailing_ws()) used from keymaps
Plugins
Navigation & editing (plugins/editor.lua)
- neo-tree.nvim — file explorer sidebar
<leader>t— toggle<leader>cd— cd to current file's directory and open
- telescope.nvim — fuzzy finder for files/buffers/grep/LSP symbols
<leader>.— jump to symbol<leader>;— jump to buffer<leader>be— jump to buffer, sorted by most recently used<leader>ag— live grep<leader>?— fuzzy-search all keybindings
- flash.nvim — jump to any visible location via search-like labels
<leader>/— jump<leader>s— search jump<leader><leader>s— treesitter jump<leader>f— forward jump
- nvim-surround — add/change/delete surrounding pairs (quotes, tags, brackets)
ys,cs,ds— plugin defaults
- nvim-autopairs — auto-close brackets/quotes, automatic
- nvim-treesitter-context — sticky header showing enclosing function/class while scrolling, automatic
- mini.align — align text on a character
ga=,ga:
- mini.bufremove — close a buffer without closing its window/split
<leader><leader>c
- vim-visual-multi — multiple cursors
<C-n>— add cursor on word
- vim-tmux-navigator — move between nvim splits and tmux panes; also works from inside
:terminalbuffers (e.g. the Claude Code terminal)<C-h/j/k/l>— move left/down/up/right
- emmet-vim — Emmet expansion, HTML/CSS files only
UI (plugins/ui.lua)
- gruvbox.nvim — colorscheme
- lualine.nvim — statusline
- bufferline.nvim — buffer tabs along the top
- indent-blankline.nvim — indent guides
- rainbow-delimiters.nvim — rainbow-colored matching brackets
- nvim-web-devicons — filetype icons (dependency for several plugins above)
- alpha-nvim — start screen shown on launch, see Dashboard below
<leader><leader>o— reopen
Completion & LSP
- blink.cmp — completion engine (LSP, path, buffer sources) —
plugins/completion.lua - mason.nvim / mason-lspconfig.nvim — installs/manages LSP servers —
plugins/lsp.lua - nvim-lspconfig — LSP client config for
ts_ls,svelte,html,cssls,basedpyright,ruff,bashls—plugins/lsp.lua - rustaceanvim — Rust LSP setup (
rust_analyzer), replaces the standard lspconfig flow for Rust —plugins/rust.lua<localleader>rr— cargo run
LSP buffer keymaps (set on LspAttach, see plugins/lsp.lua):
K— hovergd— definitiongy— type definitiongi— implementationgr— referencesrn— renameff(visual) — format selection
Debugging (plugins/dap.lua)
- nvim-dap — Debug Adapter Protocol client
<leader>db— toggle breakpoint<leader>dc— continue / start debugging<leader>di/<leader>do/<leader>dO— step into / over / out<leader>dr— toggle REPL<leader>dq— terminate session
- nvim-dap-python — configures nvim-dap for Python using
debugpy. Requires:MasonInstall debugpy; without it, debugging is skipped with a warning.
Formatting & linting (plugins/format.lua)
- conform.nvim — format-on-save (prettier, ruff_format, rustfmt, stylua per filetype)
- nvim-lint — async linting on save/insert-leave (eslint_d, shellcheck)
Treesitter (plugins/treesitter.lua)
nvim-treesitter — syntax highlighting, folding, and indentation for the installed parser list. Uses core Neovim's built-in vim.treesitter.start()/foldexpr rather than the old treesitter modules.
Git (plugins/git.lua)
- gitsigns.nvim — git change signs in the gutter, hunk stage/preview/blame
- vim-fugitive — Git commands
:Git,:Gdiffsplit,:Gvdiffsplit,:Gread,:Gwrite,:Gclog
AI (plugins/ai.lua)
- snacks.nvim — utility library (terminal provider etc.), dependency for claudecode.nvim
- claudecode.nvim — Claude Code terminal integration. Diffs render as a single unified (VS Code-style, red/green interleaved) buffer in one new split next to your active pane, and keyboard focus stays in the Claude terminal instead of jumping to the diff.
<leader>ac— toggle<leader>af— focus<leader>ab— add current buffer<leader>as(visual) — send selection<leader>aa/<leader>ad— accept/deny diff
Wiki / notes (plugins/vimwiki.lua)
- vimwiki — personal wiki across 4 notebooks (bradwiki, work, private, shared under
~/synced-notebooks/)<leader>m...— wiki keymaps (vim.g.vimwiki_map_prefix)
- vim-zettel — Zettelkasten-style note linking on top of vimwiki
- vim-table-mode — markdown/wiki table formatting
:TableModeToggle, or<leader><leader>t...prefix
- markdown-preview.nvim — live browser preview for markdown/vimwiki
<localleader>v— toggle preview
Misc (plugins/misc.lua)
- aerial.nvim — code outline/symbol sidebar
<leader>ct— toggle
- undotree — visual undo history tree
<leader>u— toggle
- persistence.nvim — session save/restore per project
- restore from the dashboard's
sbutton
- restore from the dashboard's
- which-key.nvim — shows available keybindings as you type a prefix (e.g. pause after
<leader>), automatic
Dashboard
The start screen (shown on launch, reopen with <leader><leader>o) is alpha-nvim, configured in plugins/ui.lua. It shows a random fortune | cowthink header plus buttons:
e— new filef— find file (Telescope)g— live grep (Telescope)s— restore last session (persistence.nvim)q— quit
Buffer navigation
<leader>be fuzzy-searches open buffers via Telescope, sorted by most recently used, excluding the current buffer. <leader>; does the same but in default Telescope order. Both are fuzzy-filterable as you type.