doc: Update documentation

- Moved docs to docs/ - All documentation files moved:
  - docs/KEYMAPS.md - Complete keybinding reference(rewritten)
  - docs/PLUGINS.md - Plugin list
  - docs/NATIVE_AUTO_WRAPPER_GUIDE.md - Text wrapping guide
  - docs/TELESCOPE_TO_SNACKS_MIGRATION.md - Migration notes
  - docs/keyboard_mappings.md - QMK keyboard layout
  - docs/CHANGELOG_OLD.md - Previous changelog archived
- Rewrote docs/KEYMAPS.md - Based on the actual current keymap files. Removed references to deleted plugins (flash, harpoon, dial, screenkey, persistence, LSPSaga). Updated LSP keymaps to reflect fzf-lua, DAP keymaps to reflect plugin-side registration, and added CopilotChat and g keymaps.
- Updated README.md - Fixed all doc links to docs/, removed harpoon/flash/dial/screenkey/persistence references, updated essential keymaps to current reality (fzf-lua for LSP, Snacks for navigation, <leader>dcr for debug, <leader>jd for dynamic attach), added Bun debug support mention.
- Created CHANGELOG.md at root with:
  - 2026-02-10: Documentation restructure
  - 2026-02-08: hlchunk, lspconfig, lualine, ufo fixes
  - 2026-02-05: Major cleanup - 15+ plugins removed, core refactors, keymap rework, DAP/Copilot reorganization, fzf-lua migration for LSP
  - 2026-01-13/15: Bug fixes and version bumps
  - 2026-01-10: Previous changelog entries preserved
This commit is contained in:
2026-02-10 12:49:09 -05:00
parent 1cb298b5d5
commit 2bf56c05dc
10 changed files with 964 additions and 986 deletions

View File

@@ -6,80 +6,101 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
---
## [Unreleased]
## [2026-02-10]
### Added
- **Python Debugger (debugpy)**: Full Python debugging support with multiple configurations
- Launch File - Debug current Python file
- Launch with Arguments - Debug with custom arguments
- Attach Remote - Attach to debugpy server (port 5678)
- Django - Debug Django with `manage.py runserver`
- FastAPI - Debug FastAPI with uvicorn
- Flask - Debug Flask application
- **Node.js/NestJS Debug Configurations**: Extended TypeScript/JavaScript debugging
- Launch NestJS (`dist/main.js`) with source maps
- Launch Current File
- Launch with ts-node (debug TypeScript directly)
- Attach to NestJS (port 9229)
- Attach to Process (pick from running processes)
- **Mason Debug Adapters**: Added `debugpy` and `js-debug-adapter` to auto-install list
- **README Documentation**: Added comprehensive "Debugging Setup" section with all configurations
- **Avante.nvim AI Assistant**: Added Avante.nvim with local LLM support to README documentation
- **Bash Treesitter Parser**: Installed bash parser for noice.nvim cmdline highlighting
- **Local Configuration Support**: `local.lua` is now loaded at startup and exposed via `vim.g.cargdev_local`
- Enables machine-specific paths without hardcoding
- Safe loading with `pcall` (won't error if file doesn't exist)
- Plugins gracefully skip if required config is missing
- **Documentation restructure**: Moved all documentation into `docs/` directory
- `docs/KEYMAPS.md` - Complete keybinding reference (rewritten from actual keymap files)
- `docs/PLUGINS.md` - Plugin list and descriptions
- `docs/NATIVE_AUTO_WRAPPER_GUIDE.md` - Text wrapping configuration
- `docs/TELESCOPE_TO_SNACKS_MIGRATION.md` - Migration notes
- `docs/keyboard_mappings.md` - QMK keyboard layout reference
- `docs/CHANGELOG_OLD.md` - Previous changelog archive
- **Keymap conflict detection script**: `scripts/detect_keymap_conflicts.lua`
### Changed
- **Avante Plugin**: Now uses `local.lua` for all paths and settings
- `avante_dev_path` for plugin directory
- `avante_endpoint`, `avante_api_key_name`, `avante_model` for provider config
- **IdeaDrop Plugin**: Now uses `IDEA_DIR` from `local.lua` instead of environment variable
- **README.md**: Updated documentation links to point to `docs/`, removed references to deleted plugins (flash, harpoon, dial, screenkey, persistence, mini.animate), updated keymap tables to reflect current state
- **KEYMAPS.md**: Complete rewrite based on actual current keymap definitions
### Removed
- **Hardcoded Paths**: Removed all hardcoded user paths from plugin configs
- `avante.lua` - uses `local.lua` values
- `ideaMap.lua` - uses `local.lua` values
- `leetcode.lua` - removed commented hardcoded path
- `lazygit.lua` - removed commented hardcoded path
---
## [2026-02-08]
### Fixed
- **Java Debug Adapter Paths**: Fixed incorrect paths in `ftplugin/java.lua`
- Changed `java-debug``java-debug-adapter/extension/server/`
- Changed `vscode-java-test``java-test/extension/server/`
- **Node.js DAP Adapter**: Fixed js-debug-adapter configuration in `dap.lua`
- Changed adapter type from `executable` to `server` (required by js-debug-adapter)
- Renamed adapter from `node` to `pwa-node` (standard DAP name)
- Added proper source map resolution and skipFiles patterns
- **Auto-session Lazy Loading**: Changed from `event = "VeryLazy"` to `lazy = false` to enable session auto-restore on startup
- **Alpha Dashboard Config**: Fixed `enable` to `enabled` (correct lazy.nvim spec key)
- **Snacks vs Alpha Conflict**: Disabled `Snacks.dashboard` in favor of `alpha-nvim` for CARGDEV branding
- **hlchunk.nvim**: Fixed rendering issues with scope highlighting
- **lspconfig**: Fixed LSP configuration issues
- **lualine**: Fixed statusline rendering and word count display
- **nvim-ufo**: Fixed folding behavior and peek integration
### Added
- **Java Debug & Run Keymaps**: New keybindings for Java development
- `<leader>jd` - Debug Class (DAP)
- `<leader>jt` - Test Class
- `<leader>jn` - Test Nearest Method
- `<leader>jr` - Run Java File
- `<leader>jm` - Run Maven Project
- `<leader>jg` - Run Gradle Project
- **Java Debug Dependencies**: Added `java-debug-adapter` and `java-test` to Mason ensure_installed
---
## [2026-02-05] - Major Cleanup & Refactor
### Removed - Plugins
- **codetyper.lua**: Removed locally-developed plugin (reduced maintenance surface)
- **curls.lua**: Removed local HTTP/curl plugin (replaced by kulala)
- **edgy.lua**: Removed window layout management plugin
- **flash.lua**: Removed flash.nvim jump plugin
- **sudoku.lua**: Removed sudoku game plugin
- **screenkey.lua**: Removed screenkey plugin (show keypresses)
- **persistence.lua**: Removed persistence session management
- **auto-session.lua**: Removed auto-session plugin
- **dial.lua**: Removed smart increment/decrement plugin
- **mini-animate.lua**: Removed smooth animations plugin
- **harpoon.lua**: Removed harpoon quick file marks
- **colorful-winsep.lua**: Removed colorful window separators
- **dressing.lua**: Removed vim.ui improvements (handled by snacks/noice)
- **ship.lua**: Removed ship plugin
- **fileOperations.lua**: Removed file operations plugin
### Removed - Keymaps & Docs
- **keymaps/README.md**: Removed stale keymaps documentation
- **keymaps/sudoku.lua**: Removed sudoku keymaps
- **NVIM_PERFORMANCE_ANALYSIS.md**: Removed performance analysis doc
### Changed - Core Refactors
- **Notification manager** (`notification_manager.lua`): Major refactor with local aliases, improved docs, dashboard-aware handling, nvim-notify fallback, safer notification tracking and cleanup
- **Performance monitor** (`performance_monitor.lua`): Refactored with local references and better notify usage
- **Project commands** (`project_commands.lua`): Added docs, local API/fn/notify aliases, clearer RunProject/DebugProject commands
- **Terminal helper** (`openTerminal.lua`): Module docs and refactored with local cmd/api aliases
### Changed - Keymaps
- **Reworked keymap files**: Added docstrings to all keymap modules, renamed/moved mappings to avoid conflicts
- **DAP keymaps**: Moved all DAP keymaps from `keymaps/dap.lua` into `plugins/dap.lua` config function (ensures nvim-dap is loaded before keybindings reference it)
- **Quickfix keymaps**: Moved from `<leader>q` prefix to `<leader>x` prefix to avoid conflict with quit
- **LSP navigation**: Switched from Snacks pickers to fzf-lua for `gd`, `gi`, `gr`, `gt`, symbols, and diagnostics
### Changed - Plugins & Integrations
- **DAP** (`dap.lua`): Added Bun launch config, dynamic debug attach (`<leader>jd` with port input), moved all DAP keymaps here
- **Copilot** (`copilot.lua`): Reorganized Copilot/Copilot-cmp/CopilotChat config, added copilot source to nvim-cmp, added CopilotChat keymaps (`<leader>cc`, `<leader>cq`, `<leader>ce`, `<leader>cr`, `<leader>cf`, `<leader>co`, `<leader>cd`, `<leader>ct`, `<leader>cm`)
- **nvim-cmp** (`nvim-cmp.lua`): Added copilot completion source
- **Formatting** (`formatting.lua`): Disabled google-java-format fallback for Java (prefer JDTLS formatter)
- **Java/JDTLS** (`ftplugin/java.lua`): Pinned to JDK 25, switched to mac_arm config, enabled LSP formatter, declared multiple runtimes (JavaSE-17, JavaSE-25)
- **nvim-tree**: Expanded configuration with more custom mappings
- **bufferline**: Updated configuration
- **hlchunk**: Adjusted scope highlighting settings
- **linting**: Configuration tweaks
- **vim-visual-multi**: Updated configuration
### Added - Plugin Stubs
Added minimal plugin configuration stubs for better organization (each plugin in its own file):
`autopairs`, `colorscheme`, `comments`, `crates`, `dadbod`, `diffview`, `dropbar`, `fidget`, `flutter`, `git-blame`, `gitsigns`, `grug-far`, `hardtime`, `ideaMap`, `inc-rename`, `indent-blankline`, `kulala`, `lazygit`, `leetcode`, `lspsaga`, `marks`, `mcphub`, `modicator`, `navbuddy`, `neogit`, `noice`, `nvim-cmp`, `nvim-highlight-colors`, `nvim-jdtls`, `nvim-lightbulb`, `nvim-treesitter-context`, `nvim-treesitter-text-objects`, `nvim-ts-autotag`, `obsidian`, `octo`, `outline`, `overseer`, `package-info`, `portal`, `precognition`, `reactive`, `regexplainer`, `render-markdown`, `satellite`, `snacks`, `ssr`, `substitute`, `surround`, `telescope`, `termcolor`, `tiny-inline-diagnostic`, `tmux`, `todo-comments`, `transparence`, `treesitter`, `treesj`, `trouble`, `ts-comments`, `twilight`, `undotree`, `venv-selector`, `vim-maximizer`, `vimtex`, `wakatime`, `which-key`, `yaml`, `yanky`, `zen-mode`
---
## [2026-01-15] - Bumping Version
### Changed
- **Colorscheme Configuration**: Enhanced `cargdev-cyberpunk` setup
- Enabled transparency
- Enabled italic comments
- Enabled bold keywords, functions, and types
- Enabled terminal colors
- General version bump and plugin updates
---
## [2026-01-13] - Fixing Issues
### Fixed
- **Java DAP Configuration**: Fixed debug adapter not loading
- Changed `bundles = {}` to `bundles = bundles` to properly load debug JARs
- Added `on_attach` callback to setup DAP after JDTLS attaches
- Enables hot code replacement during debugging
- **Broken Java DAP Adapter**: Removed manual Java adapter with undefined `port` variable
- Now handled automatically by nvim-jdtls via `jdtls.setup_dap()`
- Multiple bug fixes across configuration
- Fixed issues with closing Neovim
- Fixed rendering issues
---
@@ -87,73 +108,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Added
- **Custom Colorscheme**: Using `cargdev-cyberpunk` theme
- Vibrant, high-contrast cyberpunk aesthetic with neon colors
- Hot pink keywords, electric purple types, cyan strings, green functions
- Full TypeScript/LSP/Treesitter support
- Deep blue backgrounds with neon accents
- Loaded with high priority for consistent UI
- **Which-Key Group Names**: Added organized group names for better keymap discoverability
- Groups: Buffer, Code/Copilot, Debug, Explorer, Find/Files, Git, LSP, Format, Quickfix, Session, Tab/Terminal, Trouble, Copilot Chat
- **Auto-Format on Save**: Enabled smart auto-formatting with conform.nvim
- Skips certain filetypes (sql, markdown)
- Skips files in node_modules
- Added `:FormatToggle` command to enable/disable
- **Diagnostic Float on Hover**: Diagnostics now appear automatically when cursor holds
- **Safe Buffer Close**: `<leader>bd` now prompts for unsaved changes
- Options: Save & Close, Discard & Close, Cancel
- `<leader>bD` for force close without confirmation
- **Quickfix Navigation Keymaps**:
- `<leader>qn` - Next quickfix item
- `<leader>qp` - Previous quickfix item
- `<leader>qo` - Open quickfix list
- `<leader>qq` - Close quickfix list
- `<leader>qf` - First quickfix item
- `<leader>ql` - Last quickfix item
- **Location List Navigation Keymaps**:
- `<leader>ln` - Next location item
- `<leader>lp` - Previous location item
- `<leader>lo` - Open location list
- `<leader>lq` - Close location list
- **Configuration Validation**: Startup checks for:
- Neovim version (0.9+ recommended)
- Required executables (git, rg, node)
- **Plugin Update Notifications**: Lazy.nvim now notifies about available updates (daily check)
- **CheckConfig Command**: Quick access to health checks
- **Auto-Format on Save**: Enabled with conform.nvim (skips sql, markdown, node_modules)
- **Diagnostic Float on Hover**: Diagnostics appear automatically on cursor hold
- **Safe Buffer Close**: `<leader>bd` prompts for unsaved changes
- **Quickfix Navigation Keymaps**: `<leader>qn/qp/qo/qq/qf/ql`
- **Location List Navigation**: `<leader>ln/lp/lo/lq`
- **Configuration Validation**: Startup checks for Neovim version and required executables
- **Plugin Update Notifications**: Daily lazy.nvim update check
### Changed
- **Session Keymaps**: Renamed to avoid conflicts with substitute
- `<leader>ss` `<leader>sS` (Session Save)
- `<leader>sr``<leader>sR` (Session Restore)
- **Substitute Keymaps**: Reorganized to avoid conflicts
- `<leader>ss``<leader>sl` (Substitute Line)
- `<leader>sub` remains for substitute with motion
- `<leader>S` remains for substitute to end of line
- **Keymap Descriptions**: Standardized format (e.g., "Session: Save", "Substitute: Line")
- **Session Keymaps**: `<leader>ss` -> `<leader>sS`, `<leader>sr` -> `<leader>sR`
- **Substitute Keymaps**: `<leader>ss` -> `<leader>sl`
### Fixed
- **Duplicate Window Management Keymaps**: Removed duplicates from `personal.lua`, centralized in `window.lua`
- **Duplicate Resize Keymaps**: Removed duplicates, centralized in `window.lua`
- **Redundant Filetype Detection**: Now only runs if filetype is not already detected
- **Double Function Loading**: Functions now load once on VimEnter with flag protection
- **Duplicate synmaxcol Setting**: Removed duplicate (was 240 then 200), kept 200
- **Duplicate foldmethod Setting**: Removed duplicate, kept `indent` (faster than `syntax`)
- **Duplicate foldlevel Setting**: Removed duplicate setting
- **Environment Variable Validation**: `IDEA_DIR` now validated before Obsidian link setup
- Duplicate window management keymaps (centralized in `window.lua`)
- Duplicate resize keymaps
- Redundant filetype detection
- Double function loading
- Duplicate settings (synmaxcol, foldmethod, foldlevel)
### Removed
- **Temporary Files**:
- `kkk` - Unknown purpose temporary file
- `cleanup_deprecated_adapters.lua` - Cleanup script no longer needed
- **IMPROVEMENTS.md**: All issues resolved, file removed
- **Commented Code**:
- Tmux navigation keymaps from `personal.lua`
- Commented `x` keymap explanation from `general.lua`
- Commented `project_config` bootstrap from `init.lua`
### Performance
- Optimized filetype detection (conditional execution)
- Reduced redundant option settings
- Single function loading instead of double
- Temporary files (`kkk`, `cleanup_deprecated_adapters.lua`)
- IMPROVEMENTS.md (all issues resolved)
- Commented-out code (tmux keymaps, project_config bootstrap)
---
@@ -166,7 +144,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Snacks.nvim + Telescope file navigation
- nvim-tree file explorer
- LazyGit integration
- GitHub Copilot + Copilot Chat
- GitHub Copilot
- DAP debugging with UI
- Conform.nvim formatting
- Trouble.nvim diagnostics
@@ -174,73 +152,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Custom lualine theme with word count
### Migration History
- Migrated from Telescope to Snacks for primary navigation
- Kept Telescope for git-specific features
- See [TELESCOPE_TO_SNACKS_MIGRATION.md](./TELESCOPE_TO_SNACKS_MIGRATION.md) for details
- Migrated from Telescope to Snacks for primary file navigation
- Kept Telescope for git-specific features and TODOs
- See [Telescope to Snacks Migration](./docs/TELESCOPE_TO_SNACKS_MIGRATION.md) for details
---
## File Changes Summary
### Modified Files
| File | Changes |
|------|---------|
| `lua/cargdev/plugins/dap.lua` | Fixed Node.js adapter, added Python debugpy config |
| `ftplugin/java.lua` | Fixed java-debug-adapter and java-test paths |
| `lua/cargdev/plugins/lsp/mason.lua` | Added debugpy and js-debug-adapter to ensure_installed |
| `README.md` | Added Debugging Setup section with keymaps and configurations |
| `lua/cargdev/core/keymaps/README.md` | Added dap.lua and other keymap files to structure |
| `lua/cargdev/core/keymaps/personal.lua` | Removed duplicates, added quickfix/location keymaps, safe buffer close |
| `lua/cargdev/core/keymaps/plugins.lua` | Fixed session/substitute keymap conflicts |
| `lua/cargdev/core/keymaps/general.lua` | Added vault_path validation, removed commented code |
| `lua/cargdev/core/keymaps/window.lua` | Centralized window management keymaps |
| `lua/cargdev/core/init.lua` | Fixed double loading, added diagnostic hover, config validation, loads `local.lua` |
| `lua/cargdev/plugins/avante.lua` | Uses `local.lua` for paths and settings, removed hardcoded values |
| `lua/cargdev/plugins/ideaMap.lua` | Uses `local.lua` for `IDEA_DIR`, removed env var fallback |
| `lua/cargdev/plugins/leetcode.lua` | Removed commented hardcoded path |
| `lua/cargdev/plugins/lazygit.lua` | Removed commented hardcoded path |
| `lua/cargdev/core/options.lua` | Removed duplicate settings (synmaxcol, foldmethod, foldlevel) |
| `lua/cargdev/plugins/which-key.lua` | Added group names configuration |
| `lua/cargdev/plugins/formatting.lua` | Enabled auto-format on save with smart filtering |
| `lua/cargdev/lazy.lua` | Enabled plugin update notifications |
| `README.md` | Complete rewrite with proper documentation |
### Deleted Files
| File | Reason |
|------|--------|
| `kkk` | Temporary file, unknown purpose |
| `cleanup_deprecated_adapters.lua` | One-time cleanup script, no longer needed |
| `IMPROVEMENTS.md` | All issues resolved |
### New Files
| File | Purpose |
|------|---------|
| `CHANGELOG.md` | Track configuration changes |
---
## Keymap Reference
### New/Changed Keymaps
| Keymap | Action | File |
|--------|--------|------|
| `<leader>sS` | Session: Save | plugins.lua |
| `<leader>sR` | Session: Restore | plugins.lua |
| `<leader>sl` | Substitute: Line | plugins.lua |
| `<leader>bd` | Buffer: Close (safe) | personal.lua |
| `<leader>bD` | Buffer: Force close | personal.lua |
| `<leader>qn` | Quickfix: Next | personal.lua |
| `<leader>qp` | Quickfix: Previous | personal.lua |
| `<leader>qo` | Quickfix: Open | personal.lua |
| `<leader>qq` | Quickfix: Close | personal.lua |
| `<leader>qf` | Quickfix: First | personal.lua |
| `<leader>ql` | Quickfix: Last | personal.lua |
| `<leader>ln` | Location: Next | personal.lua |
| `<leader>lp` | Location: Previous | personal.lua |
| `<leader>lo` | Location: Open | personal.lua |
| `<leader>lq` | Location: Close | personal.lua |
---
*Last Updated: January 13, 2026*
*Last Updated: February 10, 2026*

View File

@@ -1,496 +0,0 @@
# Complete Keymaps Reference
**Leader Key: `<Space>`**
## Table of Contents
- [Navigation](#navigation)
- [File Management](#file-management)
- [Editing](#editing)
- [LSP & Code Intelligence](#lsp--code-intelligence)
- [Git](#git)
- [Debugging](#debugging)
- [Search & Replace](#search--replace)
- [Tasks & HTTP](#tasks--http)
- [UI & Productivity](#ui--productivity)
- [Language Specific](#language-specific)
- [Window Management](#window-management)
---
## Navigation
### Flash (Jump Anywhere)
| Key | Mode | Action |
|-----|------|--------|
| `s` | n, x, o | Flash jump (type chars to jump) |
| `S` | n, x, o | Flash treesitter select |
| `r` | o | Remote flash |
| `R` | o, x | Treesitter search |
| `<C-s>` | c | Toggle flash in search |
### Harpoon (Quick File Marks)
| Key | Action |
|-----|--------|
| `<leader>ha` | Add current file to harpoon |
| `<leader>hh` | Open harpoon menu |
| `<leader>hp` | Previous harpoon file |
| `<leader>hn` | Next harpoon file |
### Portal (Jumplist Navigation)
| Key | Action |
|-----|--------|
| `<leader>pj` | Portal jumplist backward |
| `<leader>pk` | Portal jumplist forward |
| `<leader>pc` | Portal changelist backward |
| `<leader>pq` | Portal quickfix backward |
### Navbuddy (Code Structure)
| Key | Action |
|-----|--------|
| `<leader>nb` | Open Navbuddy |
Inside Navbuddy:
- `h/j/k/l` - Navigate
- `<Enter>` - Select
- `0` - Go to root
- `q` - Close
### Telescope
| Key | Action |
|-----|--------|
| `<leader>ff` | Find files |
| `<leader>fs` | Live grep (search text) |
| `<leader>fg` | Git files |
| `<leader>fF` | Find all files |
| `<leader>fr` | Recent files |
---
## File Management
### File Explorer (nvim-tree)
| Key | Action |
|-----|--------|
| `<leader>e` | Toggle file explorer |
| `<leader>ee` | Toggle file explorer |
| `<leader>nt` | Find current file in tree |
| `<leader>ec` | Collapse file explorer |
| `<leader>er` | Refresh file explorer |
Inside nvim-tree:
- `o` - Open file
- `s` - Open in vertical split
- `i` - Open in horizontal split
- `a` - Create new file
- `r` - Rename
- `d` - Delete
- `x` - Cut
- `y` - Copy
- `p` - Paste
- `u` - Go up one directory
### Buffers
| Key | Action |
|-----|--------|
| `<S-l>` | Next buffer |
| `<S-h>` | Previous buffer |
| `<leader>bd` | Close buffer |
| `<leader>bD` | Force close buffer |
---
## Editing
### Multi-Cursor (vim-visual-multi)
| Key | Action |
|-----|--------|
| `<C-d>` | Select word under cursor / Add next occurrence |
| `<C-Down>` | Add cursor below |
| `<C-Up>` | Add cursor above |
| `<C-S-l>` | Select all occurrences |
| `<C-x>` | Skip current match |
| `<C-p>` | Remove current cursor |
| `<Esc>` | Exit multi-cursor |
### Yanky (Yank Ring)
| Key | Mode | Action |
|-----|------|--------|
| `y` | n, x | Yank |
| `p` | n, x | Put after |
| `P` | n, x | Put before |
| `<leader>yh` | n | Open yank history |
| `]p` | n | Put indented after |
| `[p` | n | Put indented before |
### Treesj (Split/Join)
| Key | Action |
|-----|--------|
| `<leader>tj` | Toggle split/join |
| `<leader>ts` | Split code block |
| `<leader>tJ` | Join code block |
### Dial (Smart Increment)
| Key | Mode | Action |
|-----|------|--------|
| `<C-a>` | n, v | Increment |
| `<C-x>` | n, v | Decrement |
| `g<C-a>` | n, v | Increment (sequence) |
| `g<C-x>` | n, v | Decrement (sequence) |
Works on: numbers, booleans, dates, CSS units, HTTP methods, operators, and more!
### Surround
| Key | Action |
|-----|--------|
| `ys{motion}{char}` | Add surround |
| `ds{char}` | Delete surround |
| `cs{old}{new}` | Change surround |
Examples:
- `ysiw"` - Surround word with quotes
- `ds"` - Delete surrounding quotes
- `cs"'` - Change " to '
### Comments
| Key | Mode | Action |
|-----|------|--------|
| `gcc` | n | Toggle line comment |
| `gc` | v | Toggle comment selection |
| `gbc` | n | Toggle block comment |
| `<leader>/` | n, v | Toggle comment |
### Substitute
| Key | Action |
|-----|--------|
| `<leader>sub` | Substitute with motion |
| `<leader>sl` | Substitute line |
| `<leader>S` | Substitute to end of line |
### Undo Tree
| Key | Action |
|-----|--------|
| `<leader>tu` | Toggle undo tree |
---
## LSP & Code Intelligence
### LSP Saga
| Key | Action |
|-----|--------|
| `K` | Hover documentation |
| `gd` | Peek definition |
| `gD` | Go to definition |
| `gt` | Peek type definition |
| `gT` | Go to type definition |
| `gh` | LSP finder (refs + impl) |
| `gr` | Rename |
| `gR` | Rename (project-wide) |
| `<leader>ca` | Code actions |
| `<leader>sl` | Show line diagnostics |
| `<leader>sc` | Show cursor diagnostics |
| `<leader>sb` | Show buffer diagnostics |
| `[d` | Previous diagnostic |
| `]d` | Next diagnostic |
| `<leader>ci` | Incoming calls |
| `<leader>co` | Outgoing calls |
| `<leader>so` | Toggle LSP outline |
### Inc-Rename (Live Preview)
| Key | Action |
|-----|--------|
| `<leader>rn` | Rename with live preview |
### Outline
| Key | Action |
|-----|--------|
| `<leader>cs` | Toggle symbol outline |
### Formatting
| Key | Action |
|-----|--------|
| `<leader>f` | Format buffer |
| `<leader>mm` | Format with conform |
### Regexplainer
| Key | Action |
|-----|--------|
| `<leader>rx` | Toggle regex explanation |
---
## Git
### LazyGit
| Key | Action |
|-----|--------|
| `<leader>gg` | Open LazyGit |
### Neogit
| Key | Action |
|-----|--------|
| `<leader>gn` | Open Neogit |
| `<leader>gnc` | Neogit commit |
| `<leader>gnp` | Neogit push |
| `<leader>gnl` | Neogit pull |
| `<leader>gnb` | Neogit branch |
### Diffview
| Key | Action |
|-----|--------|
| `<leader>gd` | Open diffview |
| `<leader>gD` | Close diffview |
| `<leader>gh` | File history (current file) |
| `<leader>gH` | File history (repo) |
### Git Blame
| Key | Action |
|-----|--------|
| `<leader>gB` | Toggle git blame |
| `<leader>gbc` | Copy commit SHA |
| `<leader>gbo` | Open commit URL |
| `<leader>gbf` | Open file URL |
### Octo (GitHub)
| Key | Action |
|-----|--------|
| `<leader>oi` | List issues |
| `<leader>oI` | Create issue |
| `<leader>op` | List PRs |
| `<leader>oP` | Create PR |
| `<leader>or` | List repos |
| `<leader>os` | Search issues/PRs |
| `<leader>oa` | Octo actions |
### Gitsigns
| Key | Action |
|-----|--------|
| `]c` | Next hunk |
| `[c` | Previous hunk |
| `<leader>hs` | Stage hunk |
| `<leader>hr` | Reset hunk |
| `<leader>hp` | Preview hunk |
---
## Debugging
### DAP (Debug Adapter Protocol)
| Key | Action |
|-----|--------|
| `<leader>db` | Toggle breakpoint |
| `<leader>dcc` | Start/Continue debugging |
| `<leader>di` | Step into |
| `<leader>do` | Step over |
| `<leader>dO` | Step out |
| `<leader>dr` | Toggle REPL |
| `<leader>dl` | Run last debug config |
| `<leader>du` | Toggle DAP UI |
| `<leader>dt` | Float element |
| `<leader>dco` | DAP commands |
| `<leader>dcf` | List DAP configs |
| `<leader>dcb` | List breakpoints |
### Java Debugging
| Key | Action |
|-----|--------|
| `<leader>jd` | Debug class |
| `<leader>jt` | Test class |
| `<leader>jn` | Test nearest method |
| `<leader>jr` | Run Java file |
---
## Search & Replace
### Grug-Far (Project-Wide)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sr` | n | Open search & replace |
| `<leader>sR` | n | Search current word |
| `<leader>sR` | v | Search selection |
Inside Grug-Far:
- `<localleader>r` - Replace
- `<localleader>R` - Replace all
- `<Enter>` - Go to location
- `q` - Close
### SSR (Structural Search/Replace)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sR` | n, x | Structural search/replace |
---
## Tasks & HTTP
### Overseer (Task Runner)
| Key | Action |
|-----|--------|
| `<leader>or` | Run task |
| `<leader>ot` | Toggle task list |
| `<leader>oa` | Task action |
| `<leader>oq` | Quick action |
| `<leader>ob` | Build |
| `<leader>oc` | Run shell command |
### Kulala (HTTP Client)
| Key | Action |
|-----|--------|
| `<leader>kr` | Run HTTP request |
| `<leader>ka` | Run all requests |
| `<leader>kp` | Previous request |
| `<leader>kn` | Next request |
| `<leader>ki` | Inspect request |
| `<leader>kt` | Toggle headers/body |
| `<leader>kc` | Copy as cURL |
| `<leader>ke` | Set environment |
---
## UI & Productivity
### Zen Mode & Focus
| Key | Action |
|-----|--------|
| `<leader>zz` | Toggle Zen mode |
| `<leader>zt` | Toggle Twilight (dim code) |
### Session
| Key | Action |
|-----|--------|
| `<leader>qs` | Restore session |
| `<leader>ql` | Restore last session |
| `<leader>qd` | Don't save session |
### Learning Vim
| Key | Action |
|-----|--------|
| `<leader>ht` | Toggle Hardtime |
| `<leader>vp` | Toggle Precognition hints |
| `<leader>vP` | Peek Precognition |
### Screenkey (Demo Mode)
| Key | Action |
|-----|--------|
| `<leader>sk` | Toggle Screenkey |
### Trouble (Diagnostics)
| Key | Action |
|-----|--------|
| `<leader>xx` | Toggle Trouble |
| `<leader>xw` | Workspace diagnostics |
| `<leader>xd` | Document diagnostics |
| `<leader>xl` | Location list |
| `<leader>xq` | Quickfix list |
| `<leader>xt` | Open TODOs in Trouble |
### Todo Comments
| Key | Action |
|-----|--------|
| `]t` | Next TODO |
| `[t` | Previous TODO |
---
## Language Specific
### Python
| Key | Action |
|-----|--------|
| `<leader>vs` | Select Python venv |
| `<leader>vc` | Select cached venv |
### JavaScript/TypeScript (package.json)
| Key | Action |
|-----|--------|
| `<leader>ns` | Show package versions |
| `<leader>nh` | Hide package info |
| `<leader>nu` | Update package |
| `<leader>nd` | Delete package |
| `<leader>ni` | Install package |
| `<leader>nc` | Change version |
### Rust (Cargo.toml)
| Key | Action |
|-----|--------|
| `<leader>ct` | Toggle crates |
| `<leader>cr` | Reload crates |
| `<leader>cv` | Show versions popup |
| `<leader>cf` | Show features popup |
| `<leader>cd` | Show dependencies |
| `<leader>cu` | Update crate |
| `<leader>cU` | Upgrade crate |
### LeetCode
| Key | Action |
|-----|--------|
| `<leader>lr` | Run code |
| `<leader>ls` | Submit code |
| `<leader>ld` | Daily challenge |
| `<leader>ll` | List problems |
| `<leader>lc` | Open console |
| `<leader>lh` | Show hints |
---
## Window Management
### Splits
| Key | Action |
|-----|--------|
| `<leader>sv` | Split vertical |
| `<leader>sh` | Split horizontal |
| `<leader>se` | Equal splits |
| `<leader>sx` | Close split |
| `<leader>sm` | Maximize split |
### Navigation
| Key | Action |
|-----|--------|
| `<C-h>` | Move to left window |
| `<C-j>` | Move to down window |
| `<C-k>` | Move to up window |
| `<C-l>` | Move to right window |
### Resize
| Key | Action |
|-----|--------|
| `<C-Up>` | Increase height |
| `<C-Down>` | Decrease height |
| `<C-Left>` | Decrease width |
| `<C-Right>` | Increase width |
---
## General
| Key | Action |
|-----|--------|
| `jj` | Exit insert mode |
| `<leader>nh` | Clear search highlights |
| `<leader>w` | Save file |
| `<leader>q` | Close file |
| `<leader>Q` | Quit all |
| `<leader>xa` | Save and close all |
---
## Commands
| Command | Description |
|---------|-------------|
| `:Lazy` | Plugin manager |
| `:Mason` | LSP server manager |
| `:Navbuddy` | Code navigation |
| `:Outline` | Symbol outline |
| `:Neogit` | Git interface |
| `:DiffviewOpen` | Diff view |
| `:GrugFar` | Search & replace |
| `:Octo` | GitHub |
| `:OverseerRun` | Run tasks |
| `:ZenMode` | Zen mode |
| `:Hardtime toggle` | Toggle hardtime |
| `:Screenkey` | Show keypresses |
| `:TSJToggle` | Toggle split/join |

View File

@@ -1,208 +0,0 @@
# Neovim Performance Analysis & Optimization Results
## Overview
This document analyzes the performance profile from `nvim-profile.log` and shows the results of applied optimizations.
## 📊 Performance Comparison Results
### ✅ **Significant Improvements**
#### 1. Clipboard Provider Performance
- **Before**: 2.16s total time, 123 calls
- **After**: 0.54s total time, 78 calls
- **Improvement**: **75% reduction** in total time, **37% fewer** calls
- **Status**: ✅ **MAJOR SUCCESS**
#### 2. Syntax Loading Performance
- **Before**: 0.70s total time, 699 calls
- **After**: 0.47s total time, 189 calls
- **Improvement**: **33% reduction** in total time, **73% fewer** calls
- **Status**: ✅ **SUCCESS**
#### 3. Filetype Plugin Loading
- **Before**: 0.70s total time, 278 calls
- **After**: 0.62s total time, 175 calls
- **Improvement**: **11% reduction** in total time, **37% fewer** calls
- **Status**: ✅ **MODERATE SUCCESS**
### ⚠️ **Performance Regressions**
#### 4. WakaTime Plugin Performance
- **Before**: 0.48s total time, 686 calls
- **After**: 1.82s total time, 2,052 calls
- **Change**: **279% increase** in total time, **199% more** calls
- **Status**: ❌ **REGRESSION** - Need to investigate
#### 5. Matchparen Highlighting
- **Before**: 0.23s total time, 2,912 calls
- **After**: 0.78s total time, 6,055 calls
- **Change**: **239% increase** in total time, **108% more** calls
- **Status**: ❌ **REGRESSION** - Need to investigate
## 🔧 Applied Optimizations
### ✅ Successful Optimizations
#### 1. Keymap Conflict Resolution
- **Fixed**: Changed `<leader>s` to `<leader>sub` to avoid conflict with `<leader>fs`
- **File**: `lua/cargdev/core/keymaps/plugins.lua`
- **Impact**: `<leader>fs` now works correctly for file search
- **Status**: ✅ **CONFIRMED WORKING**
#### 2. Clipboard Provider Optimization
- **Fixed**: Added explicit macOS clipboard configuration
- **File**: `lua/cargdev/core/options.lua`
- **Changes**: Configured `pbcopy`/`pbpaste` with caching enabled
- **Result**: **75% performance improvement**
- **Status**: ✅ **MAJOR SUCCESS**
#### 3. Syntax Loading Optimization
- **Fixed**: Optimized syntax highlighting settings
- **File**: `lua/cargdev/core/options.lua`
- **Changes**: Reduced `synmaxcol` to 200, disabled modelines
- **Result**: **33% performance improvement**
- **Status**: ✅ **SUCCESS**
#### 4. Filetype Plugin Optimization
- **Fixed**: Optimized filetype plugin loading
- **File**: `lua/cargdev/core/options.lua`
- **Changes**: Disabled modelines for security and performance
- **Result**: **11% performance improvement**
- **Status**: ✅ **MODERATE SUCCESS**
### ❌ Failed Optimizations
#### 5. WakaTime Performance Optimization
- **Attempted**: Optimized heartbeat frequency and buffering
- **File**: `lua/cargdev/plugins/wakatime.lua`
- **Changes**: Increased heartbeat frequency to 2 minutes, enabled buffering
- **Result**: **279% performance regression**
- **Status**: ❌ **NEEDS REVERT**
#### 6. Matchparen Performance Optimization
- **Attempted**: Reduced timeout values for faster response
- **File**: `lua/cargdev/core/options.lua`
- **Changes**: Reduced `matchparen_timeout` to 100ms, `matchparen_insert_timeout` to 50ms
- **Result**: **239% performance regression**
- **Status**: ❌ **NEEDS REVERT**
## 🚨 Issues Requiring Immediate Attention
### 1. WakaTime Regression
**Problem**: WakaTime is now consuming significantly more resources
**Possible Causes**:
- Buffering enabled may be causing overhead
- Increased heartbeat frequency may be triggering more processing
- Debug mode changes may have unintended effects
**Recommended Actions**:
- Revert WakaTime configuration to original settings
- Consider disabling WakaTime temporarily to measure impact
- Investigate alternative WakaTime configurations
### 2. Matchparen Regression
**Problem**: Matchparen highlighting is now much slower
**Possible Causes**:
- Reduced timeout values may be causing more frequent recalculations
- Timeout settings may be conflicting with other optimizations
- The optimization may have triggered a different code path
**Recommended Actions**:
- Revert matchparen timeout settings to defaults
- Test with original settings to confirm improvement
- Consider alternative matchparen optimization strategies
## 📈 Overall Performance Impact
### Net Performance Change
- **Clipboard**: +1.62s improvement
- **Syntax**: +0.23s improvement
- **Filetype**: +0.08s improvement
- **WakaTime**: -1.34s regression
- **Matchparen**: -0.55s regression
**Net Result**: **+0.04s improvement** (essentially neutral)
### Recommendations
1. **Keep successful optimizations** (clipboard, syntax, filetype)
2. **Revert failed optimizations** (WakaTime, matchparen)
3. **Investigate alternative approaches** for WakaTime and matchparen
4. **Consider disabling WakaTime** if not actively used
## 🔍 **Additional Performance Issues Discovered**
### 6. CursorHold Events Performance
- **Total Time**: 0.92s (CursorHold_Cb) + 0.30s (CursorHoldI_Cb) = **1.22s total**
- **Calls**: 1,213 + 625 = **1,838 calls**
- **Issue**: FixCursorHold plugin is consuming significant resources
- **Status**: ⚠️ **NEW ISSUE** - Major performance bottleneck
### 7. Tmux Navigation Performance
- **Total Time**: 0.61s (TmuxAwareNavigate) + 0.56s (VimNavigate) = **1.17s total**
- **Calls**: 63 + 63 = **126 calls**
- **Issue**: Tmux-aware navigation is slow
- **Status**: ⚠️ **NEW ISSUE** - Significant overhead
### 8. Treesitter Indentation Performance
- **Total Time**: 0.08s
- **Calls**: 15 calls
- **Issue**: Treesitter indentation is being called frequently
- **Status**: ⚠️ **NEW ISSUE** - Moderate impact
### 9. WakaTime Heartbeat System
- **Total Time**: 0.98s (SetLastHeartbeat) + 0.11s (SendHeartbeats) = **1.09s total**
- **Calls**: 206 + 60 = **266 calls**
- **Issue**: Heartbeat system is very slow
- **Status**: ❌ **MAJOR ISSUE** - Part of WakaTime regression
## 📊 **Updated Performance Summary**
### Total Performance Impact (All Issues)
- **WakaTime System**: 2.91s total (HandleActivity + Heartbeats)
- **CursorHold Events**: 1.22s total
- **Tmux Navigation**: 1.17s total
- **Matchparen**: 0.78s total
- **Clipboard**: 0.54s total (improved from 2.16s)
- **Syntax Loading**: 0.47s total (improved from 0.70s)
- **Filetype Plugins**: 0.62s total (improved from 0.70s)
**Total Identified Issues**: **~7.7 seconds** of performance overhead
## 🚨 **Critical Issues Requiring Immediate Attention**
### 1. WakaTime Complete System Failure
- **Problem**: Entire WakaTime system is consuming 2.91s total
- **Components**: HandleActivity (1.82s) + Heartbeats (1.09s)
- **Impact**: Single biggest performance bottleneck
- **Action**: **DISABLE WAKATIME IMMEDIATELY**
### 2. CursorHold Events Overhead
- **Problem**: FixCursorHold plugin consuming 1.22s
- **Impact**: Major performance hit on cursor movement
- **Action**: **OPTIMIZE OR DISABLE FixCursorHold**
### 3. Tmux Navigation Overhead
- **Problem**: Tmux-aware navigation consuming 1.17s
- **Impact**: Significant overhead for navigation
- **Action**: **OPTIMIZE Tmux integration**
## 🎯 **Revised Priority Actions**
### Immediate (Critical)
1. **Disable WakaTime completely** - Save 2.91s
2. **Optimize FixCursorHold** - Save up to 1.22s
3. **Revert matchparen settings** - Save 0.55s
### High Priority
4. **Optimize Tmux navigation** - Save up to 1.17s
5. **Investigate Treesitter indentation** - Save up to 0.08s
### Medium Priority
6. **Keep successful optimizations** (clipboard, syntax, filetype)
**Potential Total Savings**: **~5.8 seconds** (75% improvement)
---
*Analysis based on comparison of original and optimized nvim-profile.log*
*Last updated: $(date)*
*Keymap conflict: ✅ Fixed | Clipboard: ✅ 75% improvement | Syntax: ✅ 33% improvement | Filetype: ✅ 11% improvement | WakaTime: ❌ 279% regression | Matchparen: ❌ 239% regression*

159
README.md
View File

@@ -20,15 +20,17 @@ A modern, feature-rich Neovim configuration with 80+ plugins, optimized for full
## Features
- **VS Code-like UI** with file explorer on right, breadcrumbs, symbol outline
- **VS Code-like UI** with file explorer, breadcrumbs, symbol outline
- **80+ plugins** carefully configured and optimized
- **Full LSP support** for TypeScript, Python, Java, Go, Lua, and more
- **Debugging** with DAP for Node.js/NestJS, Python, Java
- **Debugging** with DAP for Node.js/NestJS, Python, Java, Bun
- **Git integration** with LazyGit, Neogit, Diffview, Octo (GitHub PRs)
- **AI assistance** with GitHub Copilot
- **AI assistance** with GitHub Copilot + CopilotChat
- **HTTP client** for API testing
- **Task runner** for build/run tasks
- **Multi-cursor** editing like VS Code
- **Snacks.nvim** for modern file navigation and pickers
- **fzf-lua** for LSP navigation
## Requirements
@@ -59,9 +61,12 @@ nvim
| Document | Description |
|----------|-------------|
| [KEYMAPS.md](./KEYMAPS.md) | **Complete keybinding reference** |
| [PLUGINS.md](./PLUGINS.md) | All plugins and their purposes |
| [CHANGELOG.md](./CHANGELOG.md) | Version history |
| [KEYMAPS.md](./docs/KEYMAPS.md) | **Complete keybinding reference** |
| [PLUGINS.md](./docs/PLUGINS.md) | All plugins and their purposes |
| [CHANGELOG.md](./CHANGELOG.md) | Version history and recent changes |
| [Native Auto Wrapper](./docs/NATIVE_AUTO_WRAPPER_GUIDE.md) | Text wrapping configuration |
| [Snacks Migration](./docs/TELESCOPE_TO_SNACKS_MIGRATION.md) | Telescope to Snacks migration notes |
| [Keyboard Mappings](./docs/keyboard_mappings.md) | QMK keyboard layout reference |
## Quick Start
@@ -71,65 +76,48 @@ nvim
| Key | Action |
|-----|--------|
| `<leader>ff` | Find files |
| `<leader>ff` | Find files (Snacks picker) |
| `<leader>fs` | Search text in project |
| `<leader>e` | Toggle file explorer (right side) |
| `<leader>e` | Toggle file explorer |
| `<leader>gg` | Open LazyGit |
| `s` | Flash jump (type chars to jump) |
| `<leader>ha` | Harpoon add file |
| `<leader>1-5` | Jump to harpooned file |
| `K` | Hover documentation |
| `gd` | Go to definition |
| `<leader>ca` | Code actions |
| `<leader>rn` | Rename symbol (live preview) |
| `K` | Peek fold or hover documentation |
| `gd` | Go to definition (fzf-lua) |
| `<leader>ca` | Code actions (fzf-lua) |
| `<leader>rn` | Rename symbol |
| `<C-d>` | Multi-cursor (select word) |
### Navigation
| Key | Action |
|-----|--------|
| `s` | Flash jump anywhere |
| `S` | Flash treesitter select |
| `<leader>nb` | Navbuddy (code structure popup) |
| `<leader>cs` | Symbol outline sidebar |
| `<leader>tu` | Undo tree |
| `<leader>ff` | Find files (Snacks) |
| `<leader>fs` | Live grep (Snacks) |
| `<leader>fr` | Recent files (Snacks) |
| `<leader>fb` | Find buffers (Snacks) |
| `<leader>fk` | Find keymaps (Snacks) |
### Git
| Key | Action |
|-----|--------|
| `<leader>gg` | LazyGit |
| `<leader>gn` | Neogit (magit-like) |
| `<leader>gd` | Diffview |
| `<leader>gh` | File history |
| `<leader>gB` | Toggle git blame |
| `<leader>oi` | GitHub issues (Octo) |
| `<leader>op` | GitHub PRs (Octo) |
### Editing
| Key | Action |
|-----|--------|
| `<C-d>` | Add cursor on word (VS Code style) |
| `<C-a>` / `<C-x>` | Smart increment/decrement |
| `<leader>tj` | Toggle split/join code blocks |
| `<leader>sr` | Search & replace (project-wide) |
| `<leader>sR` | Structural search/replace |
| `<leader>yh` | Yank history |
| `<C-p>` / `<C-n>` | Cycle yank history |
| `<leader>gs` | Git status |
| `]h` / `[h` | Next/prev hunk |
| `<leader>hs` | Stage hunk |
| `<leader>hb` | Blame line |
| `<leader>hd` | Diff this |
### LSP
| Key | Action |
|-----|--------|
| `K` | Hover documentation |
| `gd` | Peek definition |
| `gD` | Go to definition |
| `gr` | Rename |
| `gh` | LSP finder (refs, implementations) |
| `H` | Hover documentation |
| `gd` | Go to definition |
| `gi` | Go to implementation |
| `gr` | Show references |
| `<leader>ca` | Code actions |
| `<leader>rn` | Rename (live preview) |
| `<leader>sl` | Line diagnostics |
| `<leader>rn` | Rename |
| `<leader>dd` | Line diagnostics |
| `[d` / `]d` | Prev/next diagnostic |
### Debugging
@@ -137,11 +125,31 @@ nvim
| Key | Action |
|-----|--------|
| `<leader>db` | Toggle breakpoint |
| `<leader>dcc` | Start/continue debugging |
| `<leader>dcr` | Start/continue debugging |
| `<leader>di` | Step into |
| `<leader>do` | Step over |
| `<leader>dO` | Step out |
| `<leader>dot` | Step out |
| `<leader>du` | Toggle DAP UI |
| `<leader>jd` | Dynamic debug attach |
### Copilot & AI
| Key | Action |
|-----|--------|
| `<leader>cc` | Toggle CopilotChat |
| `<leader>ce` | Explain code |
| `<leader>cr` | Review code |
| `<leader>cf` | Fix code |
| `<leader>ct` | Generate tests |
### Editing
| Key | Action |
|-----|--------|
| `<C-d>` | Add cursor on word (VS Code style) |
| `<leader>/` | Toggle comment |
| `<leader>sub` | Substitute with motion |
| `<leader>mm` | Format with conform |
### Tasks & HTTP
@@ -152,45 +160,20 @@ nvim
| `<leader>kr` | Run HTTP request (in .http file) |
| `<leader>ka` | Run all HTTP requests |
### Productivity
| Key | Action |
|-----|--------|
| `<leader>zz` | Zen mode |
| `<leader>zt` | Twilight (dim inactive code) |
| `<leader>qs` | Restore session |
| `<leader>ht` | Toggle Hardtime (learn vim motions) |
| `<leader>vp` | Toggle Precognition (motion hints) |
| `<leader>sk` | Toggle Screenkey (show keypresses) |
### Python
### Language-Specific
| Key | Action |
|-----|--------|
| `<leader>vs` | Select Python venv |
| Debug configs | Django, FastAPI, Flask, Launch file |
### JavaScript/TypeScript
| Key | Action |
|-----|--------|
| `<leader>ns` | Show package versions (package.json) |
| `<leader>nu` | Update package |
| Debug configs | NestJS, ts-node, Attach |
### Rust
| Key | Action |
|-----|--------|
| `<leader>cv` | Show crate versions (Cargo.toml) |
| `<leader>cu` | Update crate |
## Plugin Categories
### Navigation & Search
- **telescope** - Fuzzy finder
- **flash.nvim** - Jump anywhere with minimal keystrokes
- **harpoon** - Quick file marks
- **snacks.nvim** - Modern file navigation, pickers, dashboard
- **telescope** - Fuzzy finder (git features, TODOs)
- **fzf-lua** - LSP navigation pickers
- **portal.nvim** - Jump through jumplist with preview
- **nvim-navbuddy** - Code structure navigation
@@ -198,14 +181,14 @@ nvim
- **lazygit** - Terminal UI for git
- **neogit** - Magit-like git interface
- **diffview** - Side-by-side diffs
- **gitsigns** - Git decorations
- **gitsigns** - Git decorations and hunk actions
- **git-blame** - Inline blame
- **octo.nvim** - GitHub issues/PRs
### LSP & Coding
- **nvim-lspconfig** + **mason** - LSP setup
- **lspsaga** - Pretty LSP UI
- **nvim-cmp** - Completion
- **nvim-cmp** - Completion (with Copilot source)
- **treesitter** - Syntax highlighting
- **outline.nvim** - Symbol sidebar
- **inc-rename** - Live rename preview
@@ -215,7 +198,6 @@ nvim
- **vim-visual-multi** - Multi-cursor
- **yanky.nvim** - Yank ring
- **treesj** - Split/join blocks
- **dial.nvim** - Smart increment
- **nvim-surround** - Surround text
- **nvim-autopairs** - Auto brackets
- **Comment.nvim** - Commenting
@@ -223,7 +205,7 @@ nvim
### UI
- **snacks.nvim** - Dashboard, notifier, picker
- **noice.nvim** - UI for messages, cmdline
- **lualine** - Statusline
- **lualine** - Statusline (with word count)
- **bufferline** - Buffer tabs
- **dropbar** - Breadcrumbs
- **satellite** - Scrollbar with markers
@@ -240,13 +222,11 @@ nvim
- **overseer** - Task runner
- **kulala** - HTTP client
- **zen-mode** - Distraction-free
- **persistence** - Session management
- **grug-far** - Search & replace
- **ssr.nvim** - Structural search/replace
### Eye Candy
- **cargdev-cyberpunk** - Custom theme
- **mini.animate** - Smooth animations
- **reactive** - Mode-based colors
- **hlchunk** - Scope highlighting
- **nvim-highlight-colors** - Color preview
@@ -266,7 +246,8 @@ nvim
| `:OverseerRun` | Run tasks |
| `:ZenMode` | Distraction-free mode |
| `:Hardtime toggle` | Toggle vim training |
| `:Screenkey` | Show keypresses |
| `:WordCount` | Show word count (excluding symbols) |
| `:RunProject` | Run project command |
## Debugging Setup
@@ -276,17 +257,17 @@ nvim
```
Configs: Launch File, Django, FastAPI, Flask, Attach Remote
### Node.js / TypeScript / NestJS
### Node.js / TypeScript / NestJS / Bun
```bash
:Mason # Install js-debug-adapter
```
Configs: Launch NestJS, Launch File, ts-node, Attach
Configs: Launch NestJS, Launch File, ts-node, Bun Launch, Dynamic Attach
### Java
```bash
:Mason # Install java-debug-adapter, java-test
```
Auto-configured via nvim-jdtls
Auto-configured via nvim-jdtls (JDK 25, mac_arm)
## HTTP Client (Kulala)
@@ -313,15 +294,9 @@ Use `<leader>kr` to run request under cursor.
### Learn Vim Motions
Enable Hardtime (`<leader>ht`) and Precognition (`<leader>vp`) to improve your vim skills.
### Quick File Switching
Use Harpoon to mark important files (`<leader>ha`), then jump instantly with `<leader>1-5`.
### Multi-Cursor Editing
Like VS Code: `<C-d>` to select word, keep pressing for more occurrences.
### Smart Increment
`<C-a>` on `true``false`, on `GET``POST`, on dates, colors, etc.
### Split/Join Code
`<leader>tj` on arrays, objects, function arguments to toggle between single/multi-line.

246
docs/CHANGELOG_OLD.md Normal file
View File

@@ -0,0 +1,246 @@
# Changelog
All notable changes to this Neovim configuration will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
---
## [Unreleased]
### Added
- **Python Debugger (debugpy)**: Full Python debugging support with multiple configurations
- Launch File - Debug current Python file
- Launch with Arguments - Debug with custom arguments
- Attach Remote - Attach to debugpy server (port 5678)
- Django - Debug Django with `manage.py runserver`
- FastAPI - Debug FastAPI with uvicorn
- Flask - Debug Flask application
- **Node.js/NestJS Debug Configurations**: Extended TypeScript/JavaScript debugging
- Launch NestJS (`dist/main.js`) with source maps
- Launch Current File
- Launch with ts-node (debug TypeScript directly)
- Attach to NestJS (port 9229)
- Attach to Process (pick from running processes)
- **Mason Debug Adapters**: Added `debugpy` and `js-debug-adapter` to auto-install list
- **README Documentation**: Added comprehensive "Debugging Setup" section with all configurations
- **Avante.nvim AI Assistant**: Added Avante.nvim with local LLM support to README documentation
- **Bash Treesitter Parser**: Installed bash parser for noice.nvim cmdline highlighting
- **Local Configuration Support**: `local.lua` is now loaded at startup and exposed via `vim.g.cargdev_local`
- Enables machine-specific paths without hardcoding
- Safe loading with `pcall` (won't error if file doesn't exist)
- Plugins gracefully skip if required config is missing
### Changed
- **Avante Plugin**: Now uses `local.lua` for all paths and settings
- `avante_dev_path` for plugin directory
- `avante_endpoint`, `avante_api_key_name`, `avante_model` for provider config
- **IdeaDrop Plugin**: Now uses `IDEA_DIR` from `local.lua` instead of environment variable
### Removed
- **Hardcoded Paths**: Removed all hardcoded user paths from plugin configs
- `avante.lua` - uses `local.lua` values
- `ideaMap.lua` - uses `local.lua` values
- `leetcode.lua` - removed commented hardcoded path
- `lazygit.lua` - removed commented hardcoded path
### Fixed
- **Java Debug Adapter Paths**: Fixed incorrect paths in `ftplugin/java.lua`
- Changed `java-debug``java-debug-adapter/extension/server/`
- Changed `vscode-java-test``java-test/extension/server/`
- **Node.js DAP Adapter**: Fixed js-debug-adapter configuration in `dap.lua`
- Changed adapter type from `executable` to `server` (required by js-debug-adapter)
- Renamed adapter from `node` to `pwa-node` (standard DAP name)
- Added proper source map resolution and skipFiles patterns
- **Auto-session Lazy Loading**: Changed from `event = "VeryLazy"` to `lazy = false` to enable session auto-restore on startup
- **Alpha Dashboard Config**: Fixed `enable` to `enabled` (correct lazy.nvim spec key)
- **Snacks vs Alpha Conflict**: Disabled `Snacks.dashboard` in favor of `alpha-nvim` for CARGDEV branding
### Added
- **Java Debug & Run Keymaps**: New keybindings for Java development
- `<leader>jd` - Debug Class (DAP)
- `<leader>jt` - Test Class
- `<leader>jn` - Test Nearest Method
- `<leader>jr` - Run Java File
- `<leader>jm` - Run Maven Project
- `<leader>jg` - Run Gradle Project
- **Java Debug Dependencies**: Added `java-debug-adapter` and `java-test` to Mason ensure_installed
### Changed
- **Colorscheme Configuration**: Enhanced `cargdev-cyberpunk` setup
- Enabled transparency
- Enabled italic comments
- Enabled bold keywords, functions, and types
- Enabled terminal colors
### Fixed
- **Java DAP Configuration**: Fixed debug adapter not loading
- Changed `bundles = {}` to `bundles = bundles` to properly load debug JARs
- Added `on_attach` callback to setup DAP after JDTLS attaches
- Enables hot code replacement during debugging
- **Broken Java DAP Adapter**: Removed manual Java adapter with undefined `port` variable
- Now handled automatically by nvim-jdtls via `jdtls.setup_dap()`
---
## [2026-01-10]
### Added
- **Custom Colorscheme**: Using `cargdev-cyberpunk` theme
- Vibrant, high-contrast cyberpunk aesthetic with neon colors
- Hot pink keywords, electric purple types, cyan strings, green functions
- Full TypeScript/LSP/Treesitter support
- Deep blue backgrounds with neon accents
- Loaded with high priority for consistent UI
- **Which-Key Group Names**: Added organized group names for better keymap discoverability
- Groups: Buffer, Code/Copilot, Debug, Explorer, Find/Files, Git, LSP, Format, Quickfix, Session, Tab/Terminal, Trouble, Copilot Chat
- **Auto-Format on Save**: Enabled smart auto-formatting with conform.nvim
- Skips certain filetypes (sql, markdown)
- Skips files in node_modules
- Added `:FormatToggle` command to enable/disable
- **Diagnostic Float on Hover**: Diagnostics now appear automatically when cursor holds
- **Safe Buffer Close**: `<leader>bd` now prompts for unsaved changes
- Options: Save & Close, Discard & Close, Cancel
- `<leader>bD` for force close without confirmation
- **Quickfix Navigation Keymaps**:
- `<leader>qn` - Next quickfix item
- `<leader>qp` - Previous quickfix item
- `<leader>qo` - Open quickfix list
- `<leader>qq` - Close quickfix list
- `<leader>qf` - First quickfix item
- `<leader>ql` - Last quickfix item
- **Location List Navigation Keymaps**:
- `<leader>ln` - Next location item
- `<leader>lp` - Previous location item
- `<leader>lo` - Open location list
- `<leader>lq` - Close location list
- **Configuration Validation**: Startup checks for:
- Neovim version (0.9+ recommended)
- Required executables (git, rg, node)
- **Plugin Update Notifications**: Lazy.nvim now notifies about available updates (daily check)
- **CheckConfig Command**: Quick access to health checks
### Changed
- **Session Keymaps**: Renamed to avoid conflicts with substitute
- `<leader>ss``<leader>sS` (Session Save)
- `<leader>sr``<leader>sR` (Session Restore)
- **Substitute Keymaps**: Reorganized to avoid conflicts
- `<leader>ss``<leader>sl` (Substitute Line)
- `<leader>sub` remains for substitute with motion
- `<leader>S` remains for substitute to end of line
- **Keymap Descriptions**: Standardized format (e.g., "Session: Save", "Substitute: Line")
### Fixed
- **Duplicate Window Management Keymaps**: Removed duplicates from `personal.lua`, centralized in `window.lua`
- **Duplicate Resize Keymaps**: Removed duplicates, centralized in `window.lua`
- **Redundant Filetype Detection**: Now only runs if filetype is not already detected
- **Double Function Loading**: Functions now load once on VimEnter with flag protection
- **Duplicate synmaxcol Setting**: Removed duplicate (was 240 then 200), kept 200
- **Duplicate foldmethod Setting**: Removed duplicate, kept `indent` (faster than `syntax`)
- **Duplicate foldlevel Setting**: Removed duplicate setting
- **Environment Variable Validation**: `IDEA_DIR` now validated before Obsidian link setup
### Removed
- **Temporary Files**:
- `kkk` - Unknown purpose temporary file
- `cleanup_deprecated_adapters.lua` - Cleanup script no longer needed
- **IMPROVEMENTS.md**: All issues resolved, file removed
- **Commented Code**:
- Tmux navigation keymaps from `personal.lua`
- Commented `x` keymap explanation from `general.lua`
- Commented `project_config` bootstrap from `init.lua`
### Performance
- Optimized filetype detection (conditional execution)
- Reduced redundant option settings
- Single function loading instead of double
---
## [Previous] - Pre-Changelog
### Features Present
- Lazy.nvim plugin management
- Full LSP support with Mason
- nvim-cmp completion
- Snacks.nvim + Telescope file navigation
- nvim-tree file explorer
- LazyGit integration
- GitHub Copilot + Copilot Chat
- DAP debugging with UI
- Conform.nvim formatting
- Trouble.nvim diagnostics
- Native auto-wrapping configuration
- Custom lualine theme with word count
### Migration History
- Migrated from Telescope to Snacks for primary navigation
- Kept Telescope for git-specific features
- See [TELESCOPE_TO_SNACKS_MIGRATION.md](./TELESCOPE_TO_SNACKS_MIGRATION.md) for details
---
## File Changes Summary
### Modified Files
| File | Changes |
|------|---------|
| `lua/cargdev/plugins/dap.lua` | Fixed Node.js adapter, added Python debugpy config |
| `ftplugin/java.lua` | Fixed java-debug-adapter and java-test paths |
| `lua/cargdev/plugins/lsp/mason.lua` | Added debugpy and js-debug-adapter to ensure_installed |
| `README.md` | Added Debugging Setup section with keymaps and configurations |
| `lua/cargdev/core/keymaps/README.md` | Added dap.lua and other keymap files to structure |
| `lua/cargdev/core/keymaps/personal.lua` | Removed duplicates, added quickfix/location keymaps, safe buffer close |
| `lua/cargdev/core/keymaps/plugins.lua` | Fixed session/substitute keymap conflicts |
| `lua/cargdev/core/keymaps/general.lua` | Added vault_path validation, removed commented code |
| `lua/cargdev/core/keymaps/window.lua` | Centralized window management keymaps |
| `lua/cargdev/core/init.lua` | Fixed double loading, added diagnostic hover, config validation, loads `local.lua` |
| `lua/cargdev/plugins/avante.lua` | Uses `local.lua` for paths and settings, removed hardcoded values |
| `lua/cargdev/plugins/ideaMap.lua` | Uses `local.lua` for `IDEA_DIR`, removed env var fallback |
| `lua/cargdev/plugins/leetcode.lua` | Removed commented hardcoded path |
| `lua/cargdev/plugins/lazygit.lua` | Removed commented hardcoded path |
| `lua/cargdev/core/options.lua` | Removed duplicate settings (synmaxcol, foldmethod, foldlevel) |
| `lua/cargdev/plugins/which-key.lua` | Added group names configuration |
| `lua/cargdev/plugins/formatting.lua` | Enabled auto-format on save with smart filtering |
| `lua/cargdev/lazy.lua` | Enabled plugin update notifications |
| `README.md` | Complete rewrite with proper documentation |
### Deleted Files
| File | Reason |
|------|--------|
| `kkk` | Temporary file, unknown purpose |
| `cleanup_deprecated_adapters.lua` | One-time cleanup script, no longer needed |
| `IMPROVEMENTS.md` | All issues resolved |
### New Files
| File | Purpose |
|------|---------|
| `CHANGELOG.md` | Track configuration changes |
---
## Keymap Reference
### New/Changed Keymaps
| Keymap | Action | File |
|--------|--------|------|
| `<leader>sS` | Session: Save | plugins.lua |
| `<leader>sR` | Session: Restore | plugins.lua |
| `<leader>sl` | Substitute: Line | plugins.lua |
| `<leader>bd` | Buffer: Close (safe) | personal.lua |
| `<leader>bD` | Buffer: Force close | personal.lua |
| `<leader>qn` | Quickfix: Next | personal.lua |
| `<leader>qp` | Quickfix: Previous | personal.lua |
| `<leader>qo` | Quickfix: Open | personal.lua |
| `<leader>qq` | Quickfix: Close | personal.lua |
| `<leader>qf` | Quickfix: First | personal.lua |
| `<leader>ql` | Quickfix: Last | personal.lua |
| `<leader>ln` | Location: Next | personal.lua |
| `<leader>lp` | Location: Previous | personal.lua |
| `<leader>lo` | Location: Open | personal.lua |
| `<leader>lq` | Location: Close | personal.lua |
---
*Last Updated: January 13, 2026*

546
docs/KEYMAPS.md Normal file
View File

@@ -0,0 +1,546 @@
# Complete Keymaps Reference
**Leader Key: `<Space>`**
## Table of Contents
- [General](#general)
- [Personal Workflow](#personal-workflow)
- [Navigation (Snacks Picker)](#navigation-snacks-picker)
- [LSP & Code Intelligence](#lsp--code-intelligence)
- [File Management](#file-management)
- [Editing](#editing)
- [Git](#git)
- [Debugging (DAP)](#debugging-dap)
- [Copilot & AI](#copilot--ai)
- [Terminal](#terminal)
- [Window Management](#window-management)
- [Database](#database)
- [LeetCode](#leetcode)
- [Text Wrapping](#text-wrapping)
- [Folding (nvim-ufo)](#folding-nvim-ufo)
- [Session Management](#session-management)
- [Commands](#commands)
---
## General
| Key | Mode | Action |
|-----|------|--------|
| `jj` | i | Exit insert mode |
| `<leader>nh` | n | Clear search highlights |
| `<leader>Q` | n | Quit all |
---
## Personal Workflow
### File Management
| Key | Mode | Action |
|-----|------|--------|
| `<leader>w` | n | Save file |
| `<leader>q` | n | Quit |
| `<leader>xa` | n | Save and close all |
| `<leader>so` | n | Reload nvim (source %) |
| `<leader>no` | n | Clear search highlight |
### Editing Shortcuts
| Key | Mode | Action |
|-----|------|--------|
| `<leader>u` | n | Select entire file |
| `<leader>4` | n | Duplicate line below |
| `<leader>+` | n | Increment number |
| `<leader>-` | n | Decrement number |
| `<leader>sy` | n | Re-indent entire file |
| `<C-e>` | n | Fast scroll down (10 lines) |
| `<C-y>` | n | Fast scroll up (10 lines) |
### Buffer Management
| Key | Mode | Action |
|-----|------|--------|
| `<leader>bd` | n | Close buffer (safe, prompts if modified) |
| `<leader>bD` | n | Force close buffer |
| `<C-p>` | n | Next buffer |
| `<C-n>` | n | Previous buffer |
### Coding Shortcuts
| Key | Mode | Action |
|-----|------|--------|
| `<leader>re` | n | Insert React import at top |
| `<leader>,` | n | Add comma at end of line |
| `<leader>;` | n | Add semicolon at end of line |
| `<leader>xr` | n | Run file with Node.js |
### Quickfix Navigation
| Key | Mode | Action |
|-----|------|--------|
| `<leader>xn` | n | Next quickfix item |
| `<leader>xp` | n | Previous quickfix item |
| `<leader>xo` | n | Open quickfix list |
| `<leader>xq` | n | Close quickfix list |
| `<leader>xf` | n | First quickfix item |
| `<leader>xl` | n | Last quickfix item |
### Location List Navigation
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ln` | n | Next location item |
| `<leader>lp` | n | Previous location item |
| `<leader>lo` | n | Open location list |
| `<leader>lq` | n | Close location list |
---
## Navigation (Snacks Picker)
### File Navigation
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ff` | n | Find files |
| `<leader>fs` | n | Live grep |
| `<leader>fc` | n | Grep string under cursor |
| `<leader>fr` | n | Recent files |
### Buffer & Utility Search
| Key | Mode | Action |
|-----|------|--------|
| `<leader>fb` | n | Find buffers |
| `<leader>fh` | n | Help tags |
| `<leader>fm` | n | Find marks |
| `<leader>fk` | n | Find keymaps |
| `<leader>fC` | n | Find commands |
### Git (Telescope Fallback)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>fG` | n | Git commits |
| `<leader>fB` | n | Git buffer commits |
| `<leader>fg` | n | Git branches |
| `<leader>gs` | n | Git status |
### TODO Search
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ft` | n | Find TODOs (Telescope) |
### Telescope (Unfiltered)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>fF` | n | Find files (all, unfiltered) |
---
## LSP & Code Intelligence
### Navigation (fzf-lua)
| Key | Mode | Action |
|-----|------|--------|
| `gd` | n | Go to definition |
| `gi` | n | Go to implementation |
| `gr` | n | Show references |
| `gt` | n | Go to type definition |
### Symbols
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ds` | n | Document symbols |
| `<leader>lw` | n | Workspace symbols |
### Code Actions & Rename
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ca` | n | Code actions |
| `<leader>rn` | n | Rename symbol |
| `H` | n | Hover documentation |
### Diagnostics
| Key | Mode | Action |
|-----|------|--------|
| `<leader>D` | n | Workspace diagnostics |
| `<leader>dd` | n | Line diagnostics (float) |
| `[d` | n | Previous diagnostic |
| `]d` | n | Next diagnostic |
### Formatting
| Key | Mode | Action |
|-----|------|--------|
| `<leader>mm` | n, v | Format with conform |
---
## File Management
### File Explorer (nvim-tree)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>e` | n | Toggle file explorer |
Inside nvim-tree:
| Key | Action |
|-----|--------|
| `o` | Open file |
| `s` | Open in vertical split |
| `i` | Open in horizontal split |
| `a` | Create new file |
| `r` | Rename |
| `d` | Delete |
| `x` | Cut |
| `y` | Copy |
| `p` | Paste |
| `u` | Go up one directory |
| `<leader>f` | Change root to node |
### Buffer Cycling
| Key | Mode | Action |
|-----|------|--------|
| `<S-l>` | n | Next buffer |
| `<S-h>` | n | Previous buffer |
---
## Editing
### Comments (Comment.nvim)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>/` | n, v | Toggle comment |
| `gcc` | n | Toggle line comment |
| `gc` | n | Toggle comment |
| `gco` | n | Insert comment below |
| `gcO` | n | Insert comment above |
| `gcA` | n | Insert comment at end of line |
| `gb` | n | Toggle block comment |
| `gbc` | n | Toggle block comment |
### Substitute (substitute.nvim)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sub` | n | Substitute with motion |
| `<leader>sl` | n | Substitute line |
| `<leader>S` | n | Substitute to end of line |
### Surround (nvim-surround)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sa` | n | Add surrounding |
| `<leader>sd` | n | Delete surrounding |
| `<leader>sr` | n | Replace surrounding |
| `ys` | n | Add surrounding (classic) |
| `yss` | n | Add surrounding to line |
| `yS` | n | Add surrounding on new lines |
| `ySS` | n | Add surrounding to line on new lines |
### Console.log
| Key | Mode | Action |
|-----|------|--------|
| `<leader>cl` | n | Insert console.log snippet |
### TODO Comments
| Key | Mode | Action |
|-----|------|--------|
| `<leader>xt` | n | Open TODOs in Trouble |
---
## Git
### LazyGit
| Key | Mode | Action |
|-----|------|--------|
| `<leader>gg` | n | Open LazyGit |
### Gitsigns (buffer-local)
| Key | Mode | Action |
|-----|------|--------|
| `]h` | n | Next hunk |
| `[h` | n | Previous hunk |
| `<leader>hs` | n, v | Stage hunk |
| `<leader>hr` | n, v | Reset hunk |
| `<leader>hS` | n | Stage buffer |
| `<leader>hR` | n | Reset buffer |
| `<leader>hu` | n | Undo stage hunk |
| `<leader>hp` | n | Preview hunk |
| `<leader>hb` | n | Blame line (full) |
| `<leader>hB` | n | Toggle line blame |
| `<leader>hd` | n | Diff this |
| `<leader>hD` | n | Diff this ~ |
| `ih` | o, x | Select hunk (text object) |
### Trouble (Diagnostics Panel)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>Xx` | n | Toggle Trouble |
| `<leader>Xw` | n | Workspace diagnostics |
| `<leader>Xd` | n | Document diagnostics |
| `<leader>Xl` | n | Location list |
| `<leader>Xq` | n | Quickfix list |
---
## Debugging (DAP)
### Debug Control
| Key | Mode | Action |
|-----|------|--------|
| `<leader>dcr` | n | Start/Continue debugging |
| `<leader>do` | n | Step over |
| `<leader>di` | n | Step into |
| `<leader>dot` | n | Step out |
| `<leader>db` | n | Toggle breakpoint |
| `<leader>dB` | n | Set conditional breakpoint |
| `<leader>dr` | n | Open REPL |
| `<leader>dl` | n | Run last debug config |
| `<leader>du` | n | Toggle DAP UI |
| `<leader>dq` | n | Stop debugging |
| `<leader>drt` | n | Reset DAP UI layout |
### Debug Navigation
| Key | Mode | Action |
|-----|------|--------|
| `<leader>dcf` | n | List/select DAP configs |
| `<leader>dcb` | n | List breakpoints |
| `<leader>dco` | n | DAP Commands (REPL) |
### Dynamic Attach
| Key | Mode | Action |
|-----|------|--------|
| `<leader>jd` | n | Debug attach (dynamic port, Bun/Node) |
### Project Run/Debug
| Key | Mode | Action |
|-----|------|--------|
| `<leader>pr` | n | Run project |
| `<leader>pd` | n | Debug project |
| `<leader>p` | n | Run project (quick) |
---
## Copilot & AI
### Copilot Commands
| Key | Mode | Action |
|-----|------|--------|
| `<leader>cp` | n | Open Copilot panel |
| `<leader>cD` | n | Disable Copilot |
| `<leader>cE` | n | Enable Copilot |
| `<leader>cs` | n | Copilot status |
### Copilot Panel Navigation
| Key | Mode | Action |
|-----|------|--------|
| `[[` | n | Previous suggestion (in panel) |
| `]]` | n | Next suggestion (in panel) |
| `<CR>` | n | Accept suggestion (in panel) |
| `rp` | n | Refresh panel |
| `<M-CR>` | n | Open panel |
### Inline Suggestions
| Key | Mode | Action |
|-----|------|--------|
| `<leader>]` | i | Next suggestion |
| `<leader>[` | i | Previous suggestion |
| `<C-]>` | i | Dismiss suggestion |
### CopilotChat
| Key | Mode | Action |
|-----|------|--------|
| `<leader>cc` | n | Toggle CopilotChat window |
| `<leader>cq` | n | Quick chat (whole buffer) |
| `<leader>ce` | n, v | Explain code |
| `<leader>cr` | n, v | Review code |
| `<leader>cf` | n, v | Fix code |
| `<leader>co` | n, v | Optimize code |
| `<leader>cd` | n, v | Generate docs |
| `<leader>ct` | n, v | Generate tests |
| `<leader>cm` | n | Select model |
### Copilot Chat (Visual, personal shortcuts)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>zn` | v | Rename variable |
| `<leader>zc` | n | Open Copilot Chat |
| `<leader>ze` | v | Explain code |
| `<leader>zr` | v | Review code |
| `<leader>zf` | v | Fix code |
| `<leader>zo` | v | Optimize code |
| `<leader>zd` | v | Generate docs |
---
## Terminal
### ToggleTerm
| Key | Mode | Action |
|-----|------|--------|
| `<leader>tf` | n | Float terminal |
| `<leader>th` | n | Horizontal split terminal |
| `<leader>tv` | n | Vertical split terminal |
### Terminal Mode
| Key | Mode | Action |
|-----|------|--------|
| `<C-h>` | t | Switch to left window |
| `<C-t>` | t | Close terminal |
| `<C-\><C-\>` | t | Escape terminal mode |
---
## Window Management
### Splits
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sv` | n | Split vertical |
| `<leader>sh` | n | Split horizontal |
| `<leader>se` | n | Make splits equal |
| `<leader>sx` | n | Close current split |
### Tabs
| Key | Mode | Action |
|-----|------|--------|
| `<leader>to` | n | Open new tab |
| `<leader>cx` | n | Close current tab |
| `<leader>tn` | n | Next tab |
| `<leader>tp` | n | Previous tab |
| `<leader>tt` | n | Open buffer in new tab |
### Resize Splits
| Key | Mode | Action |
|-----|------|--------|
| `<C-h>` | n | Increase width (+5) |
| `<C-l>` | n | Decrease width (-5) |
| `<C-k>` | n | Increase height (+5) |
| `<C-j>` | n | Decrease height (-5) |
---
## Database
### vim-dadbod UI
| Key | Mode | Action |
|-----|------|--------|
| `<leader>Du` | n | Toggle Database UI |
| `<leader>Da` | n | Add DB connection |
| `<leader>Df` | n | Find DB buffer |
| `<leader>De` | n, v | Execute query |
| `<leader>Dw` | n | Save query |
| `<leader>Dr` | n | Rename DB buffer |
### Quick Connections
| Key | Mode | Action |
|-----|------|--------|
| `<leader>Dp` | n | PostgreSQL Docker |
| `<leader>Dm` | n | MongoDB local |
| `<leader>DM` | n | MongoDB Docker |
| `<leader>Di` | n | Redis local |
| `<leader>DI` | n | Redis Docker |
### Redis & MongoDB (plugins.lua)
| Key | Mode | Action |
|-----|------|--------|
| `<leader>rds` | n | Open Redis |
| `<leader>rdk` | n | Show Redis keys |
| `<leader>rdi` | n | Redis info |
| `<leader>mdb` | n | Open MongoDB |
| `<leader>mdc` | n | Connect MongoDB |
| `<leader>mdd` | n | Disconnect MongoDB |
---
## LeetCode
| Key | Mode | Action |
|-----|------|--------|
| `<leader>lr` | n | Run code |
| `<leader>ls` | n | Submit code |
| `<leader>ld` | n | Daily challenge |
| `<leader>ll` | n | List problems |
| `<leader>lc` | n | Open console |
| `<leader>lu` | n | Update cookie |
| `<leader>lh` | n | Show hints |
| `<leader>lls` | n | Get latest submission |
---
## Text Wrapping
### Wrapping Controls
| Key | Mode | Action |
|-----|------|--------|
| `<leader>tw` | n | Toggle line wrapping |
| `<leader>tl` | n | Toggle line break |
| `<leader>tx` | n | Show 80-char column guide |
| `<leader>tH` | n | Hide column guide |
### Format Text
| Key | Mode | Action |
|-----|------|--------|
| `<leader>tpg` | n | Format paragraph |
| `<leader>tf` | v | Format selection |
| `<leader>tF` | n | Format entire file |
### Text Width
| Key | Mode | Action |
|-----|------|--------|
| `<leader>t80` | n | Set textwidth to 80 |
| `<leader>t100` | n | Set textwidth to 100 |
| `<leader>t120` | n | Set textwidth to 120 |
| `<leader>t0` | n | Disable textwidth |
### Auto-wrap Controls
| Key | Mode | Action |
|-----|------|--------|
| `<leader>ta` | n | Enable auto-wrap text |
| `<leader>tA` | n | Disable auto-wrap text |
| `<leader>tc` | n | Enable auto-wrap comments |
| `<leader>tC` | n | Disable auto-wrap comments |
| `<leader>ti` | n | Toggle break indent |
| `<leader>ts` | n | Show break indicator |
| `<leader>tS` | n | Hide break indicator |
---
## Folding (nvim-ufo)
| Key | Mode | Action |
|-----|------|--------|
| `zR` | n | Open all folds |
| `zM` | n | Close all folds |
| `zr` | n | Open folds except kinds |
| `zm` | n | Close folds by level |
| `K` | n | Peek fold or LSP hover |
---
## Session Management
| Key | Mode | Action |
|-----|------|--------|
| `<leader>sS` | n | Session: Save |
| `<leader>sR` | n | Session: Restore |
---
## Commands
| Command | Description |
|---------|-------------|
| `:Lazy` | Plugin manager |
| `:Mason` | LSP server manager |
| `:Navbuddy` | Code navigation |
| `:Outline` | Symbol outline |
| `:Neogit` | Git interface |
| `:DiffviewOpen` | Diff view |
| `:GrugFar` | Search & replace |
| `:Octo` | GitHub PRs/issues |
| `:OverseerRun` | Run tasks |
| `:ZenMode` | Distraction-free mode |
| `:Hardtime toggle` | Toggle vim training |
| `:TSJToggle` | Toggle split/join |
| `:WordCount` | Show word count (excluding symbols) |
| `:RunProject` | Run project command |
| `:DebugProject` | Debug project command |
---
*Last Updated: February 10, 2026*