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

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*

View File

@@ -0,0 +1,202 @@
# Native Auto Wrapper Configuration
## 🎯 **Overview**
Your Neovim is now configured with native auto wrapper functionality using built-in Neovim features - no additional packages required!
## ✨ **Features**
### **Automatic Text Wrapping**
- **Text files**: Auto-wrap at 80 characters
- **Code files**: Auto-wrap comments at 100 characters
- **Documentation**: Auto-wrap at 78 characters
- **Configuration files**: Auto-wrap comments at 80 characters
### **Smart Formatting**
- **Break at word boundaries**: Lines break at natural word boundaries
- **Preserve indentation**: Wrapped lines maintain proper indentation
- **Visual indicators**: Shows break indicators (↪) for wrapped lines
- **Color column**: Visual guide at specified text width
## 🎮 **Keymaps**
### **Text Wrapping Controls**
| Keymap | Description |
|--------|-------------|
| `<leader>tw` | Toggle line wrapping |
| `<leader>tl` | Toggle line break |
| `<leader>tc` | Show 80 character column guide |
| `<leader>tC` | Hide column guide |
### **Text Formatting**
| Keymap | Description |
|--------|-------------|
| `<leader>tf` | Format current paragraph |
| `<leader>tF` | Format entire file |
| `<leader>tf` (visual) | Format selected text |
### **Text Width Settings**
| Keymap | Description |
|--------|-------------|
| `<leader>t80` | Set text width to 80 characters |
| `<leader>t100` | Set text width to 100 characters |
| `<leader>t120` | Set text width to 120 characters |
| `<leader>t0` | Disable text width (no wrapping) |
### **Auto-wrap Controls**
| Keymap | Description |
|--------|-------------|
| `<leader>ta` | Enable auto-wrap text |
| `<leader>tA` | Disable auto-wrap text |
| `<leader>tc` | Enable auto-wrap comments |
| `<leader>tC` | Disable auto-wrap comments |
### **Indentation and Display**
| Keymap | Description |
|--------|-------------|
| `<leader>ti` | Toggle break indent |
| `<leader>ts` | Show break indicator (↪) |
| `<leader>tS` | Hide break indicator |
## 📁 **File Type Specific Settings**
### **Text and Documentation Files**
- **File types**: `text`, `markdown`, `gitcommit`, `mail`
- **Text width**: 80 characters
- **Auto-wrap**: Enabled for all text
- **Line break**: At word boundaries
### **Code Files**
- **File types**: `lua`, `javascript`, `typescript`, `python`, `java`, `cpp`, `c`, `rust`, `go`
- **Text width**: 100 characters
- **Auto-wrap**: Comments only
- **Format options**: Smart comment wrapping
### **Documentation Files**
- **File types**: `help`, `man`
- **Text width**: 78 characters
- **Auto-wrap**: Enabled for all text
- **Line break**: At word boundaries
### **Configuration Files**
- **File types**: `conf`, `config`, `ini`, `toml`, `yaml`, `json`
- **Text width**: 80 characters
- **Auto-wrap**: Comments only
## 🔧 **Native Neovim Settings**
### **Core Settings**
```lua
-- Text wrapping
opt.wrap = true -- Enable line wrapping
opt.linebreak = true -- Break at word boundaries
opt.breakindent = true -- Preserve indentation
opt.showbreak = "" -- Break indicator
opt.breakindentopt = "shift:2" -- Indent wrapped lines
-- Text width
opt.textwidth = 80 -- Default text width
opt.colorcolumn = "80" -- Visual column guide
```
### **Format Options**
```lua
opt.formatoptions = "jcroqlnt" -- Format options
-- j: Remove comment leader when joining lines
-- c: Auto-wrap comments using textwidth
-- r: Auto-wrap comments when pressing Enter
-- o: Auto-wrap comments when pressing 'o' or 'O'
-- q: Allow formatting of comments with 'gq'
-- l: Long lines are not broken in insert mode
-- n: Recognize numbered lists
-- t: Auto-wrap text using textwidth
```
## 📝 **Usage Examples**
### **1. Writing Documentation**
```markdown
# This is a long title that will automatically wrap at 80 characters when you type it
This is a long paragraph that will automatically wrap at word boundaries when it reaches 80 characters, making your documentation more readable and properly formatted.
```
### **2. Writing Code Comments**
```lua
-- This is a very long comment that will automatically wrap at 100 characters when you press Enter or 'o', making your code more readable and maintaining proper indentation
local function example()
-- This comment will also wrap automatically
return "example"
end
```
### **3. Writing Git Commit Messages**
```bash
# This commit message will automatically wrap at 80 characters
git commit -m "This is a very long commit message that describes the changes made to the codebase in detail"
```
## 🎨 **Visual Features**
### **Break Indicators**
- **Symbol**: `↪` shows where lines are wrapped
- **Toggle**: Use `<leader>ts` to show/hide
### **Color Column**
- **Guide**: Visual line at text width
- **Toggle**: Use `<leader>tc` to show/hide
### **Indentation**
- **Preserved**: Wrapped lines maintain indentation
- **Smart**: Proper indentation for code blocks
## 🔍 **Troubleshooting**
### **Text Not Wrapping**
1. Check if wrapping is enabled: `:set wrap?`
2. Verify text width: `:set textwidth?`
3. Check format options: `:set formatoptions?`
### **Comments Not Wrapping**
1. Ensure format option 'c' is set: `:set formatoptions+=c`
2. Check file type: `:set filetype?`
3. Verify text width is set: `:set textwidth?`
### **Indentation Issues**
1. Enable break indent: `:set breakindent`
2. Check break indent options: `:set breakindentopt?`
3. Verify smart indent: `:set smartindent?`
## 🚀 **Advanced Configuration**
### **Custom File Type Settings**
Add to your configuration:
```lua
vim.api.nvim_create_autocmd("FileType", {
pattern = { "your_filetype" },
callback = function()
vim.opt_local.textwidth = 120
vim.opt_local.formatoptions:append("c")
end,
})
```
### **Custom Break Indicator**
```lua
vim.opt.showbreak = "" -- Custom break indicator
```
### **Custom Color Column**
```lua
vim.opt.colorcolumn = "80,100,120" -- Multiple column guides
```
## ✅ **Benefits of Native Configuration**
- **No additional packages**: Uses built-in Neovim features
- **Fast and lightweight**: No external dependencies
- **Consistent behavior**: Works the same across all Neovim installations
- **Easy to customize**: Simple Lua configuration
- **Reliable**: No plugin conflicts or compatibility issues
Your native auto wrapper is now fully configured and ready to use! 🎉

209
docs/PLUGINS.md Normal file
View File

@@ -0,0 +1,209 @@
# Plugins Reference
Complete list of all plugins in this configuration.
## Navigation & Search
| Plugin | Description |
|--------|-------------|
| `nvim-telescope/telescope.nvim` | Fuzzy finder for files, text, buffers |
| `folke/flash.nvim` | Jump anywhere with minimal keystrokes |
| `ThePrimeagen/harpoon` | Quick file marks and navigation |
| `cbochs/portal.nvim` | Navigate jumplist/changelist with preview |
| `SmiteshP/nvim-navbuddy` | Code structure navigation popup |
| `SmiteshP/nvim-navic` | Breadcrumb provider for navbuddy |
## File Management
| Plugin | Description |
|--------|-------------|
| `nvim-tree/nvim-tree.lua` | File explorer sidebar |
| `nvim-tree/nvim-web-devicons` | File icons |
## Git
| Plugin | Description |
|--------|-------------|
| `kdheepak/lazygit.nvim` | LazyGit integration |
| `NeogitOrg/neogit` | Magit-like git interface |
| `sindrets/diffview.nvim` | Side-by-side diff viewer |
| `lewis6991/gitsigns.nvim` | Git signs in gutter |
| `f-person/git-blame.nvim` | Inline git blame |
| `pwntester/octo.nvim` | GitHub issues/PRs in Neovim |
## LSP & Code Intelligence
| Plugin | Description |
|--------|-------------|
| `neovim/nvim-lspconfig` | LSP configuration |
| `williamboman/mason.nvim` | LSP server installer |
| `williamboman/mason-lspconfig.nvim` | Mason + lspconfig bridge |
| `nvimdev/lspsaga.nvim` | Pretty LSP UI |
| `hrsh7th/nvim-cmp` | Completion engine |
| `hrsh7th/cmp-nvim-lsp` | LSP completion source |
| `hrsh7th/cmp-buffer` | Buffer completion source |
| `hrsh7th/cmp-path` | Path completion source |
| `hedyhli/outline.nvim` | Symbol outline sidebar |
| `smjonas/inc-rename.nvim` | Live rename preview |
| `kosayoda/nvim-lightbulb` | Code action indicator |
| `rachartier/tiny-inline-diagnostic.nvim` | Pretty inline diagnostics |
| `folke/trouble.nvim` | Diagnostics list |
| `pmizio/typescript-tools.nvim` | Enhanced TypeScript support |
## Treesitter
| Plugin | Description |
|--------|-------------|
| `nvim-treesitter/nvim-treesitter` | Syntax highlighting |
| `nvim-treesitter/nvim-treesitter-context` | Sticky function headers |
| `nvim-treesitter/nvim-treesitter-textobjects` | Text objects |
| `folke/ts-comments.nvim` | Better comments for embedded languages |
| `windwp/nvim-ts-autotag` | Auto close/rename HTML tags |
## Editing
| Plugin | Description |
|--------|-------------|
| `mg979/vim-visual-multi` | Multi-cursor editing |
| `gbprod/yanky.nvim` | Yank ring with history |
| `Wansmer/treesj` | Split/join code blocks |
| `monaqa/dial.nvim` | Smart increment/decrement |
| `kylechui/nvim-surround` | Surround text objects |
| `windwp/nvim-autopairs` | Auto close brackets |
| `numToStr/Comment.nvim` | Commenting |
| `folke/todo-comments.nvim` | Highlight TODOs |
| `gbprod/substitute.nvim` | Substitute operator |
| `mbbill/undotree` | Visual undo history |
| `chentoast/marks.nvim` | Better marks |
| `kevinhwang91/nvim-ufo` | Better folding |
## Search & Replace
| Plugin | Description |
|--------|-------------|
| `MagicDuck/grug-far.nvim` | Project-wide search & replace |
| `cshuaimin/ssr.nvim` | Structural search/replace |
## Debugging
| Plugin | Description |
|--------|-------------|
| `mfussenegger/nvim-dap` | Debug Adapter Protocol |
| `rcarriga/nvim-dap-ui` | Debug UI |
| `nvim-neotest/nvim-nio` | Async IO for dap-ui |
| `theHamsta/nvim-dap-virtual-text` | Virtual text for debugging |
| `mfussenegger/nvim-dap-python` | Python debugging |
| `jay-babu/mason-nvim-dap.nvim` | Mason + DAP bridge |
| `Weissle/persistent-breakpoints.nvim` | Save breakpoints |
## Tasks & HTTP
| Plugin | Description |
|--------|-------------|
| `stevearc/overseer.nvim` | Task runner |
| `mistweaverco/kulala.nvim` | HTTP client |
## UI & Theme
| Plugin | Description |
|--------|-------------|
| `CarGDev/cargdev-cyberpunk` | Custom cyberpunk theme |
| `folke/snacks.nvim` | Dashboard, notifier, picker, terminal |
| `folke/noice.nvim` | UI for messages, cmdline, popups |
| `nvim-lualine/lualine.nvim` | Statusline |
| `akinsho/bufferline.nvim` | Buffer tabs |
| `Bekaboo/dropbar.nvim` | VS Code-like breadcrumbs |
| `lewis6991/satellite.nvim` | Scrollbar with markers |
| `folke/which-key.nvim` | Keybinding hints |
| `stevearc/dressing.nvim` | Better vim.ui |
| `rcarriga/nvim-notify` | Notification manager |
| `j-hui/fidget.nvim` | LSP progress |
| `folke/edgy.nvim` | Window layout management |
## Eye Candy
| Plugin | Description |
|--------|-------------|
| `echasnovski/mini.animate` | Smooth animations |
| `rasulomaroff/reactive.nvim` | Mode-based colors |
| `mawkler/modicator.nvim` | Line number mode colors |
| `shellRaining/hlchunk.nvim` | Scope highlighting |
| `nvim-zh/colorful-winsep.nvim` | Colorful window separators |
| `brenoprata10/nvim-highlight-colors` | Color preview |
| `lukas-reineke/indent-blankline.nvim` | Indent guides |
| `xiyaowong/transparent.nvim` | Transparent background |
## Productivity
| Plugin | Description |
|--------|-------------|
| `folke/zen-mode.nvim` | Distraction-free mode |
| `folke/twilight.nvim` | Dim inactive code |
| `folke/persistence.nvim` | Session management |
| `rmagatti/auto-session` | Auto session restore |
| `m4xshen/hardtime.nvim` | Vim motion training |
| `tris203/precognition.nvim` | Vim motion hints |
| `NStefan002/screenkey.nvim` | Show keypresses |
| `bennypowers/nvim-regexplainer` | Regex explanation |
## Language Specific
| Plugin | Description |
|--------|-------------|
| `linux-cultist/venv-selector.nvim` | Python venv selector |
| `vuki656/package-info.nvim` | NPM package versions |
| `saecki/crates.nvim` | Rust crate versions |
| `mfussenegger/nvim-jdtls` | Java LSP + debugging |
| `akinsho/flutter-tools.nvim` | Flutter development |
| `lervag/vimtex` | LaTeX support |
## Database
| Plugin | Description |
|--------|-------------|
| `kristijanhusak/vim-dadbod-ui` | Database UI |
| `tpope/vim-dadbod` | Database interaction |
| `kristijanhusak/vim-dadbod-completion` | DB completion |
## Testing
| Plugin | Description |
|--------|-------------|
| `nvim-neotest/neotest` | Test runner framework |
| `nvim-neotest/neotest-jest` | Jest adapter |
| `nvim-neotest/neotest-python` | Python test adapter |
## AI & Copilot
| Plugin | Description |
|--------|-------------|
| `zbirenbaum/copilot.lua` | GitHub Copilot |
| `zbirenbaum/copilot-cmp` | Copilot completion source |
## Misc
| Plugin | Description |
|--------|-------------|
| `wakatime/vim-wakatime` | Coding time tracking |
| `kawre/leetcode.nvim` | LeetCode integration |
| `christoomey/vim-tmux-navigator` | Tmux integration |
| `szw/vim-maximizer` | Window maximizer |
| `nvim-lua/plenary.nvim` | Lua utilities |
| `MunifTanjim/nui.nvim` | UI components |
| `kkharji/sqlite.lua` | SQLite for plugins |
---
## Plugin Count: 80+
## Installation
All plugins are managed by [lazy.nvim](https://github.com/folke/lazy.nvim) and auto-install on first run.
```vim
:Lazy " Open plugin manager
:Lazy sync " Sync plugins
:Lazy update " Update plugins
:Lazy clean " Remove unused plugins
:Lazy profile " Check plugin load times
```

View File

@@ -0,0 +1,106 @@
# Telescope to Snacks Migration
## Overview
Successfully migrated from Telescope to Snacks throughout the project for a more modern, faster, and cleaner interface.
## Changes Made
### 1. **Alpha Menu** (`lua/cargdev/plugins/alpha.lua`)
-**Find File**: `Telescope find_files``Snacks.picker.files()`
-**Find Text**: `Telescope live_grep``Snacks.picker.grep()`
-**Recent Files**: `Telescope oldfiles``Snacks.picker.oldfiles()`
### 2. **Keymaps** (`lua/cargdev/core/keymaps/snacks.lua`)
-**File Navigation**: All file search keymaps updated to Snacks
-**Buffer Management**: Buffer search updated to Snacks
-**LSP Integration**: LSP pickers updated to Snacks
-**Symbol Search**: Document and workspace symbols updated to Snacks
### 3. **LSP Keymaps** (`lua/cargdev/core/keymaps/lsp.lua`)
-**Navigation**: `gd`, `gi`, `gr`, `gt` updated to Snacks
-**Symbols**: `<leader>ds`, `<leader>ws` updated to Snacks
-**Diagnostics**: `<leader>D` updated to Snacks
### 4. **DAP Keymaps** (`lua/cargdev/core/keymaps/dap.lua`)
-**DAP Integration**: All DAP pickers updated to Snacks
### 5. **File Structure**
-**Renamed**: `telescope.lua``snacks.lua`
-**Updated**: All documentation references
## Kept Telescope For
Some features were kept with Telescope as Snacks may not have equivalent functionality:
### **Git Features**
```lua
-- Git (using Telescope for git features as Snacks may not have all git pickers)
keymap.set("n", "<leader>fG", "<cmd>Telescope git_commits<cr>", { desc = "Git commits" })
keymap.set("n", "<leader>fB", "<cmd>Telescope git_bcommits<cr>", { desc = "Git buffer commits" })
keymap.set("n", "<leader>fg", "<cmd>Telescope git_branches<cr>", { desc = "Git branches" })
keymap.set("n", "<leader>gs", "<cmd>Telescope git_status<cr>", { desc = "Git status" })
```
### **Todos**
```lua
-- Todos (keep Telescope for todos as Snacks may not have this)
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
```
## Benefits of Migration
### **Performance**
-**Faster**: Snacks is generally faster than Telescope
- 🚀 **Better UX**: Smoother animations and transitions
- 📱 **Modern**: Better touch/gesture support
### **Interface**
- 🎨 **Cleaner**: More modern, less overwhelming interface
- 🎯 **Focused**: Streamlined experience
- 🔧 **Integrated**: Better integration with other Snacks components
### **Consistency**
- 🎯 **Unified**: All pickers now use the same interface
- 🔄 **Cohesive**: Consistent experience across all features
- 📱 **Modern**: Contemporary design language
## Keymaps Summary
### **File Navigation**
- `<leader>ff` - Find files (Snacks)
- `<leader>fs` - Live grep (Snacks)
- `<leader>fc` - Grep string (Snacks)
- `<leader>fr` - Recent files (Snacks)
### **Buffer Management**
- `<leader>fb` - Find buffers (Snacks)
- `<leader>fh` - Help tags (Snacks)
- `<leader>fm` - Find marks (Snacks)
- `<leader>fk` - Find keymaps (Snacks)
- `<leader>fC` - Find commands (Snacks)
### **LSP Navigation**
- `gd` - Go to definition (Snacks)
- `gi` - Go to implementation (Snacks)
- `gr` - Show references (Snacks)
- `gt` - Go to type definition (Snacks)
- `<leader>ds` - Document symbols (Snacks)
- `<leader>ws` - Workspace symbols (Snacks)
- `<leader>D` - Show diagnostics (Snacks)
### **DAP Integration**
- `<leader>dcf` - DAP configurations (Snacks)
- `<leader>dcb` - List breakpoints (Snacks)
- `<leader>dco` - DAP commands (Snacks)
## Alpha Menu
The alpha menu now uses Snacks for all navigation:
- **`f`** - Find File (Snacks)
- **`g`** - Find Text (Snacks)
- **`r`** - Recent Files (Snacks)
## Migration Complete! 🎉
Your Neovim configuration now uses Snacks for all primary navigation and search functionality, providing a faster, more modern, and consistent experience throughout your editor.

95
docs/keyboard_mappings.md Normal file
View File

@@ -0,0 +1,95 @@
# Custom Keyboard Keymaps
## Overview
This document details the custom key mappings and functionality of the QMK firmware configuration, including mappings relevant to Neovim and Tmux usage.
---
## Custom Keycodes
### RGB Lighting Control
- **RGB_SLD**: Sets the RGB lighting mode to static.
### Macro Key Bindings
These macros are optimized for Neovim and Tmux workflows.
- **ST_MACRO_0**: Opens the Neovim terminal (`Alt + Cmd + I`).
- **ST_MACRO_1**: Moves backward in Tmux (`Ctrl + B`, then `D`).
- **ST_MACRO_2**: Moves forward in Tmux (`Ctrl + B`, then `C`).
- **ST_MACRO_3**: Moves to the previous Tmux window (`Ctrl + B`, then `P`).
- **ST_MACRO_4**: Moves to the next Tmux window (`Ctrl + B`, then `N`).
- **ST_MACRO_5**: Closes the current Tmux pane (`Ctrl + B`, then `W`).
- **ST_MACRO_6**: Splits a Tmux pane vertically (`Ctrl + B`, then `Shift + |`).
- **ST_MACRO_7**: Opens a new Tmux session (`Ctrl + B`, then `Shift + ;`, then `NEW`).
- **ST_MACRO_8**: Moves left in a Tmux pane (`Ctrl + B`, then `Left Arrow`).
- **ST_MACRO_9**: Moves down in a Tmux pane (`Ctrl + B`, then `Down Arrow`).
- **ST_MACRO_10**: Moves up in a Tmux pane (`Ctrl + B`, then `Up Arrow`).
- **ST_MACRO_11**: Moves right in a Tmux pane (`Ctrl + B`, then `Right Arrow`).
- **ST_MACRO_12**: Decreases window size in Tmux (`Ctrl + B`, then `-`).
- **ST_MACRO_13**: Moves to the beginning of a line in Neovim (`Space + B D`).
- **ST_MACRO_14**: Formats the entire file in Neovim (`Space + F G`).
- **ST_MACRO_15**: Creates a new tab in Neovim (`Space + N T`).
### Special Functions
- **MAC_LOCK**: Triggers a system-specific lock command.
---
## Tap Dance Actions
Tap dance actions allow a key to perform multiple functions depending on the number of taps.
### **DANCE_0**
- **Single Tap**: Escape key (useful for exiting insert mode in Neovim).
- **Single Hold**: `Ctrl + Up` (scrolls up in Neovim or switches buffers).
- **Double Tap**: Sends double Escape (useful for quickly leaving insert mode in Neovim).
### **DANCE_1**
- **Single Tap**: Grave (`~`) (for quick access to tilde in Vim commands).
- **Single Hold**: `&` (used in Tmux for window management).
- **Double Tap**: Sends double grave (`~~`).
### **DANCE_2**
- **Single Tap**: Spacebar (default action).
- **Single Hold**: `Cmd + Space` (Spotlight search on macOS, also used for command execution in Neovim).
- **Double Tap**: Sends double space (quick spacing in text documents).
### **DANCE_3**
- **Single Tap**: `0` (moves cursor to the beginning of a line in Neovim).
- **Single Hold**: `=` (resizes panes in Tmux).
- **Double Tap**: Sends double `0`.
---
## Layer Functions
The keyboard supports multiple layers for different functionalities.
### **Layer 0 (Default Layer - Neovim and Tmux Focused)**
- **Neovim shortcuts**: Efficient navigation and command execution.
- **Tmux pane/window management**: Quick switching and resizing.
### **Layer 1 (Function & Symbols Layer)**
- **F-keys (F1F12)**
- **Media and RGB controls**
- **Special characters (`@, $, %, &, *, etc.`)**
### **Layer 2 (Macros & Shortcuts Layer)**
- **Macro functions for Neovim (`ST_MACRO_115`)**
- **Media and navigation shortcuts**
### **Layer 3 (Navigation & Window Management Layer)**
- **Arrow keys and window movement shortcuts**
- **Undo, cut, paste, and system controls**
- **Tmux session switching and splits**
### **Layer 4 (Mouse & Boot Mode Layer)**
- **Mouse controls and screenshot shortcuts**
- **Boot mode activation (`QK_BOOT`)**
---
## Special Modifiers
- **MO(n)**: Momentary activation of layer `n`.
- **LT(n, key)**: Hold for layer `n`, tap for `key`.
- **TG(n)**: Toggle layer `n` on/off.
This structured keymap provides an overview of the keyboard's advanced functionality, integrating Neovim, Tmux, and QMK efficiently.