Files
lua-nvim/README.md
Carlos Gutierrez 2bf56c05dc 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
2026-02-10 12:49:09 -05:00

315 lines
9.3 KiB
Markdown

# CargDev Neovim Configuration
A modern, feature-rich Neovim configuration with 80+ plugins, optimized for full-stack development.
```
██████╗ █████╗ ██████╗ ██████╗ ██████╗ ███████╗██╗ ██╗
█╔════╝██╔══██╗██╔══██╗██╔════╝ ██╔══██╗██╔════╝██║ ██║
█║ ███████║██████╔╝██║ ███╗██║ ██║█████╗ ██║ ██║
█║ ██╔══██║██╔══██╗██║ ██║██║ ██║██╔══╝ ╚██╗ ██╔╝
██████╗██║ ██║██║ ██║╚██████╔╝██████╔╝███████╗ ╚████╔╝
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═══╝
███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║
██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║
██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
```
## Features
- **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, Bun
- **Git integration** with LazyGit, Neogit, Diffview, Octo (GitHub PRs)
- **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
```bash
# Required
brew install neovim ripgrep fd node python3
# Optional but recommended
brew install lazygit jq
pip3 install pynvim
npm install -g neovim
```
## Installation
```bash
# Backup existing config
mv ~/.config/nvim ~/.config/nvim.bak
# Clone this configuration
git clone <your-repo-url> ~/.config/nvim
# Start Neovim (plugins auto-install)
nvim
```
## Documentation
| Document | Description |
|----------|-------------|
| [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
### Leader Key: `<Space>`
### Essential Keymaps
| Key | Action |
|-----|--------|
| `<leader>ff` | Find files (Snacks picker) |
| `<leader>fs` | Search text in project |
| `<leader>e` | Toggle file explorer |
| `<leader>gg` | Open LazyGit |
| `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 |
|-----|--------|
| `<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>gs` | Git status |
| `]h` / `[h` | Next/prev hunk |
| `<leader>hs` | Stage hunk |
| `<leader>hb` | Blame line |
| `<leader>hd` | Diff this |
### LSP
| Key | Action |
|-----|--------|
| `H` | Hover documentation |
| `gd` | Go to definition |
| `gi` | Go to implementation |
| `gr` | Show references |
| `<leader>ca` | Code actions |
| `<leader>rn` | Rename |
| `<leader>dd` | Line diagnostics |
| `[d` / `]d` | Prev/next diagnostic |
### Debugging
| Key | Action |
|-----|--------|
| `<leader>db` | Toggle breakpoint |
| `<leader>dcr` | Start/continue debugging |
| `<leader>di` | Step into |
| `<leader>do` | Step over |
| `<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
| Key | Action |
|-----|--------|
| `<leader>or` | Run task (Overseer) |
| `<leader>ot` | Toggle task list |
| `<leader>kr` | Run HTTP request (in .http file) |
| `<leader>ka` | Run all HTTP requests |
### Language-Specific
| Key | Action |
|-----|--------|
| `<leader>vs` | Select Python venv |
| `<leader>ns` | Show package versions (package.json) |
| `<leader>cv` | Show crate versions (Cargo.toml) |
## Plugin Categories
### Navigation & Search
- **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
### Git
- **lazygit** - Terminal UI for git
- **neogit** - Magit-like git interface
- **diffview** - Side-by-side diffs
- **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 (with Copilot source)
- **treesitter** - Syntax highlighting
- **outline.nvim** - Symbol sidebar
- **inc-rename** - Live rename preview
- **lightbulb** - Code action indicator
### Editing
- **vim-visual-multi** - Multi-cursor
- **yanky.nvim** - Yank ring
- **treesj** - Split/join blocks
- **nvim-surround** - Surround text
- **nvim-autopairs** - Auto brackets
- **Comment.nvim** - Commenting
### UI
- **snacks.nvim** - Dashboard, notifier, picker
- **noice.nvim** - UI for messages, cmdline
- **lualine** - Statusline (with word count)
- **bufferline** - Buffer tabs
- **dropbar** - Breadcrumbs
- **satellite** - Scrollbar with markers
- **which-key** - Keybinding hints
- **trouble** - Diagnostics list
### Debugging
- **nvim-dap** - Debug Adapter Protocol
- **nvim-dap-ui** - Debug UI
- **nvim-dap-python** - Python debugging
- **nvim-jdtls** - Java debugging
### Productivity
- **overseer** - Task runner
- **kulala** - HTTP client
- **zen-mode** - Distraction-free
- **grug-far** - Search & replace
- **ssr.nvim** - Structural search/replace
### Eye Candy
- **cargdev-cyberpunk** - Custom theme
- **reactive** - Mode-based colors
- **hlchunk** - Scope highlighting
- **nvim-highlight-colors** - Color preview
## Commands
| Command | Description |
|---------|-------------|
| `:Lazy` | Plugin manager |
| `:Mason` | LSP server manager |
| `:Navbuddy` | Code navigation |
| `:Outline` | Symbol outline |
| `:Neogit` | Git interface |
| `:DiffviewOpen` | Open diff view |
| `:GrugFar` | Search & replace |
| `:Octo` | GitHub integration |
| `:OverseerRun` | Run tasks |
| `:ZenMode` | Distraction-free mode |
| `:Hardtime toggle` | Toggle vim training |
| `:WordCount` | Show word count (excluding symbols) |
| `:RunProject` | Run project command |
## Debugging Setup
### Python
```bash
:Mason # Install debugpy
```
Configs: Launch File, Django, FastAPI, Flask, Attach Remote
### Node.js / TypeScript / NestJS / Bun
```bash
:Mason # Install js-debug-adapter
```
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 (JDK 25, mac_arm)
## HTTP Client (Kulala)
Create a `.http` file:
```http
### Get users
GET https://api.example.com/users
Authorization: Bearer {{token}}
### Create user
POST https://api.example.com/users
Content-Type: application/json
{
"name": "John"
}
```
Use `<leader>kr` to run request under cursor.
## Tips & Tricks
### Learn Vim Motions
Enable Hardtime (`<leader>ht`) and Precognition (`<leader>vp`) to improve your vim skills.
### Multi-Cursor Editing
Like VS Code: `<C-d>` to select word, keep pressing for more occurrences.
### Split/Join Code
`<leader>tj` on arrays, objects, function arguments to toggle between single/multi-line.
## Troubleshooting
```vim
:checkhealth " Run health checks
:Lazy sync " Sync plugins
:Mason " Check LSP servers
:LspInfo " Check LSP status
```
## License
MIT License