# 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 on right, 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 - **Git integration** with LazyGit, Neogit, Diffview, Octo (GitHub PRs) - **AI assistance** with GitHub Copilot - **HTTP client** for API testing - **Task runner** for build/run tasks - **Multi-cursor** editing like VS Code ## 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 ~/.config/nvim # Start Neovim (plugins auto-install) nvim ``` ## Documentation | Document | Description | |----------|-------------| | [KEYMAPS.md](./KEYMAPS.md) | **Complete keybinding reference** | | [PLUGINS.md](./PLUGINS.md) | All plugins and their purposes | | [CHANGELOG.md](./CHANGELOG.md) | Version history | ## Quick Start ### Leader Key: `` ### Essential Keymaps | Key | Action | |-----|--------| | `ff` | Find files | | `fs` | Search text in project | | `e` | Toggle file explorer (right side) | | `gg` | Open LazyGit | | `s` | Flash jump (type chars to jump) | | `ha` | Harpoon add file | | `1-5` | Jump to harpooned file | | `K` | Hover documentation | | `gd` | Go to definition | | `ca` | Code actions | | `rn` | Rename symbol (live preview) | | `` | Multi-cursor (select word) | ### Navigation | Key | Action | |-----|--------| | `s` | Flash jump anywhere | | `S` | Flash treesitter select | | `nb` | Navbuddy (code structure popup) | | `cs` | Symbol outline sidebar | | `tu` | Undo tree | ### Git | Key | Action | |-----|--------| | `gg` | LazyGit | | `gn` | Neogit (magit-like) | | `gd` | Diffview | | `gh` | File history | | `gB` | Toggle git blame | | `oi` | GitHub issues (Octo) | | `op` | GitHub PRs (Octo) | ### Editing | Key | Action | |-----|--------| | `` | Add cursor on word (VS Code style) | | `` / `` | Smart increment/decrement | | `tj` | Toggle split/join code blocks | | `sr` | Search & replace (project-wide) | | `sR` | Structural search/replace | | `yh` | Yank history | | `` / `` | Cycle yank history | ### LSP | Key | Action | |-----|--------| | `K` | Hover documentation | | `gd` | Peek definition | | `gD` | Go to definition | | `gr` | Rename | | `gh` | LSP finder (refs, implementations) | | `ca` | Code actions | | `rn` | Rename (live preview) | | `sl` | Line diagnostics | | `[d` / `]d` | Prev/next diagnostic | ### Debugging | Key | Action | |-----|--------| | `db` | Toggle breakpoint | | `dcc` | Start/continue debugging | | `di` | Step into | | `do` | Step over | | `dO` | Step out | | `du` | Toggle DAP UI | ### Tasks & HTTP | Key | Action | |-----|--------| | `or` | Run task (Overseer) | | `ot` | Toggle task list | | `kr` | Run HTTP request (in .http file) | | `ka` | Run all HTTP requests | ### Productivity | Key | Action | |-----|--------| | `zz` | Zen mode | | `zt` | Twilight (dim inactive code) | | `qs` | Restore session | | `ht` | Toggle Hardtime (learn vim motions) | | `vp` | Toggle Precognition (motion hints) | | `sk` | Toggle Screenkey (show keypresses) | ### Python | Key | Action | |-----|--------| | `vs` | Select Python venv | | Debug configs | Django, FastAPI, Flask, Launch file | ### JavaScript/TypeScript | Key | Action | |-----|--------| | `ns` | Show package versions (package.json) | | `nu` | Update package | | Debug configs | NestJS, ts-node, Attach | ### Rust | Key | Action | |-----|--------| | `cv` | Show crate versions (Cargo.toml) | | `cu` | Update crate | ## Plugin Categories ### Navigation & Search - **telescope** - Fuzzy finder - **flash.nvim** - Jump anywhere with minimal keystrokes - **harpoon** - Quick file marks - **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 - **git-blame** - Inline blame - **octo.nvim** - GitHub issues/PRs ### LSP & Coding - **nvim-lspconfig** + **mason** - LSP setup - **lspsaga** - Pretty LSP UI - **nvim-cmp** - Completion - **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 - **dial.nvim** - Smart increment - **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 - **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 - **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 ## 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 | | `:Screenkey` | Show keypresses | ## Debugging Setup ### Python ```bash :Mason # Install debugpy ``` Configs: Launch File, Django, FastAPI, Flask, Attach Remote ### Node.js / TypeScript / NestJS ```bash :Mason # Install js-debug-adapter ``` Configs: Launch NestJS, Launch File, ts-node, Attach ### Java ```bash :Mason # Install java-debug-adapter, java-test ``` Auto-configured via nvim-jdtls ## 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 `kr` to run request under cursor. ## Tips & Tricks ### Learn Vim Motions Enable Hardtime (`ht`) and Precognition (`vp`) to improve your vim skills. ### Quick File Switching Use Harpoon to mark important files (`ha`), then jump instantly with `1-5`. ### Multi-Cursor Editing Like VS Code: `` to select word, keep pressing for more occurrences. ### Smart Increment `` on `true` → `false`, on `GET` → `POST`, on dates, colors, etc. ### Split/Join Code `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