Your one-script solution for the perfect Neovim development environment with intelligent tri-mode system and Claude Code integration.
-
Clone and run:
git clone <your-repo-url> cd auto_nvim_setup ./setup.sh
-
Go make coffee β
-
Come back to a perfectly configured Neovim!
Switch between three intelligent modes based on your workflow:
- π Learning Mode (
<Space>ml): Minimal LSP, no autocomplete, forces you to think - β‘ Development Mode (
<Space>md): Full LSP intelligence, autocomplete, diagnostics - π€ Claude Mode (
<Space>mc): Optimized for Claude Code integration
- Python (Pyright LSP)
- Go (gopls LSP)
- JavaScript/TypeScript (TypeScript Language Server)
- Lua (lua_ls LSP)
- Rust (rust_analyzer LSP)
- Telescope - Fuzzy finder for everything
- Neo-tree - Visual file explorer with git status
- Harpoon - Quick file bookmarking and switching
- Dark minimalistic design
- Rose Pine (default) and Tokyo Night themes
- Transparent backgrounds
- Informative status line with git branch, mode, and diagnostics
| Key | Action |
|---|---|
<Space>ml |
Switch to Learning mode |
<Space>md |
Switch to Development mode |
<Space>mc |
Switch to Claude mode |
| Key | Action |
|---|---|
<Space>ff |
Find files (git-aware) |
<Space>fg |
Live grep search |
<Space>fb |
Find buffers |
<Space>fr |
Recent files |
<Space>fc |
Find string under cursor |
<Space>e |
Toggle file explorer |
<Space>o |
Focus file explorer |
| Key | Action |
|---|---|
<Space>a |
Add file to harpoon |
<Ctrl>e |
Toggle harpoon menu |
<Ctrl>u |
Navigate to harpoon file 1 |
<Ctrl>i |
Navigate to harpoon file 2 |
<Ctrl>o |
Navigate to harpoon file 3 |
<Ctrl>p |
Navigate to harpoon file 4 |
<Space>hh |
Show harpoon marks |
<Space>hc |
Clear all harpoon marks |
| Key | Action |
|---|---|
gd |
Go to definition |
K |
Hover documentation |
<Space>vd |
Show diagnostic |
]d |
Next diagnostic |
[d |
Previous diagnostic |
<Space>vca |
Code actions |
<Space>vrr |
Find references |
<Space>vrn |
Rename symbol |
<Ctrl>h |
Signature help (insert mode) |
| Key | Action |
|---|---|
<Space>gs |
Git status |
<Space>gd |
Git diff |
<Space>gb |
Git blame |
<Space>gl |
Git log |
<Space>gp |
Git push |
<Space>gP |
Git pull |
<Space>gc |
Git commit |
<Space>ga |
Git add all |
<Space>gA |
Git add current file |
| Key | Action |
|---|---|
]c |
Next hunk |
[c |
Previous hunk |
<Space>hs |
Stage hunk |
<Space>hr |
Reset hunk |
<Space>hp |
Preview hunk |
<Space>hb |
Blame line |
<Space>tb |
Toggle line blame |
| Key | Action |
|---|---|
<Space>cc |
Activate Claude Code mode |
<Space>cp |
Copy file path to clipboard |
<Space>cf |
Copy file content to clipboard |
<Space>cs |
Copy selection to clipboard (visual mode) |
<Space>ctx |
Copy project context to clipboard |
<Space>ct |
Open Claude terminal |
| Key | Action |
|---|---|
<Space>u |
Toggle undo tree |
<Space>tt |
Toggle trouble diagnostics |
<Space>zz |
Toggle zen mode |
<Space>t |
Toggle terminal |
<Space>f |
Format buffer |
| Key | Action |
|---|---|
J/K (visual) |
Move selection up/down |
<Ctrl>d/<Ctrl>u |
Scroll half-page (centered) |
n/N |
Next/previous search (centered) |
<Space>p |
Paste without losing register |
<Space>y |
Yank to system clipboard |
<Space>d |
Delete to void register |
<Space>s |
Search and replace word under cursor |
| Key | Action |
|---|---|
<Space>nf |
Generate function docs |
<Space>nc |
Generate class docs |
<Space>nt |
Generate type docs |
<Space>nF |
Generate file docs |
| Key | Action |
|---|---|
<Space>tr |
Switch to Rose Pine theme |
<Space>tt |
Switch to Tokyo Night theme |
-
Learning New Language:
- Start in Learning Mode (
<Space>ml) - When stuck β Claude Mode (
<Space>mc) - Ask Claude for help β Copy context (
<Space>ctx) - Return to Learning Mode to implement
- Start in Learning Mode (
-
Development Work:
- Use Development Mode (
<Space>md) for full intelligence - Complex refactoring β Claude Mode for discussion
- Quick context sharing with
<Space>cp,<Space>cf,<Space>cs
- Use Development Mode (
-
Quick Context Sharing:
<Space>ctx- Get project overview for Claude<Space>cf- Share current file with Claude<Space>cs- Share selected code with Claude
- β No autocomplete
- β No LSP hover/diagnostics
- β No formatting
- β Syntax highlighting only
- Perfect for learning without crutches
- β Full LSP intelligence
- β Autocomplete
- β Diagnostics and error highlighting
- β Auto-formatting
- β Git integration
- Maximum productivity
- β LSP enabled (but less intrusive)
- β No autocomplete (cleaner for Claude interaction)
- β Git integration
- β Optimized terminal layout
- Perfect for Claude Code collaboration
- Edit
nvim/after/plugin/lsp.lua - Add your language server to
ensure_installed - Add custom configuration in handlers
- Add plugin to
nvim/lua/d00ksky/packer.lua - Create configuration in
nvim/after/plugin/ - Run
:PackerSync
Edit nvim/lua/d00ksky/modes.lua to adjust mode behaviors.
The setup script installs everything automatically:
- Neovim 0.8+
- Node.js & npm (for language servers)
- Python 3 & pip (for Python development)
- Go (for Go development)
- Git (for version control)
- Build tools (gcc, make, etc.)
- Clipboard support (xclip)
# Ubuntu/Debian
sudo apt install git curl build-essential unzip nodejs npm python3 python3-pip golang-go xclip
# Fedora
sudo dnf install git curl gcc gcc-c++ make unzip nodejs npm python3 python3-pip golang xclip
# Arch Linux
sudo pacman -S git curl base-devel unzip nodejs npm python python-pip go xclip- β Ubuntu/Debian (apt)
- β Fedora (dnf)
- β RHEL/CentOS (yum)
- β Arch Linux (pacman)
- β WSL 1 & 2 (with Windows clipboard integration)
Your status line shows:
- Current mode (Learning/Development/Claude)
- Git branch with diff stats
- File path and modification status
- LSP diagnostics count
- Line/column position with relative positioning
- Progress through file
- Packer - Plugin manager
- Plenary - Lua utilities
- Telescope - Fuzzy finder
- Neo-tree - File explorer
- Harpoon - Quick file switching
- LSP-Zero - LSP configuration
- Mason - LSP installer
- nvim-cmp - Autocompletion
- LuaSnip - Snippets
- Fugitive - Git commands
- GitSigns - Git decorations
- Rose Pine - Color scheme
- Tokyo Night - Alternative color scheme
- Lualine - Status line
- TreeSitter - Syntax highlighting
- UndoTree - Visual undo history
- Trouble - Diagnostics panel
- Zen Mode - Distraction-free writing
- ToggleTerm - Terminal integration
- Cloak - Hide sensitive information
- Neogen - Documentation generator
The setup script now includes automatic fixes for common issues, but here are manual solutions if needed:
Issue: "Cannot find package tsserver" or similar errors
Solution: Already fixed in setup script! If you see this:
# In Neovim
:MasonTroubleshoot
# OR manually install with correct names:
:MasonInstall pyright gopls typescript-language-server lua-language-server rust-analyzerIssue: "externally-managed-environment" errors
Solution: Script now handles this automatically by using system packages first:
# Manual fix if needed:
sudo apt install python3-pylsp # Ubuntu/Debian
# OR
pip3 install --user python-lsp-server --break-system-packagesIssue: "rustup could not choose a version of cargo to run"
Solution: Fixed automatically in script, manual fix:
rustup default stableIssue: Neo-tree showing migration/deprecation warnings
Solution: Fixed automatically in script with warning suppression
# In Neovim
:PackerClean
:PackerSync# In Neovim
:Mason
# Language servers install automatically when you open relevant fileschmod +x setup.shEnsure Windows is in PATH:
echo $PATH | grep -q "/mnt/c/Windows/System32" || echo 'export PATH="$PATH:/mnt/c/Windows/System32"' >> ~/.bashrc# Use the included fix scripts:
./fix_setup_issues.sh # Fix common setup problems
./fix_neotree.sh # Fix Neo-tree warnings
./reset_mason.sh # Reset Mason completely
# Or manual cleanup:
rm -rf ~/.config/nvim ~/.cache/nvim ~/.local/share/nvim
./setup.sh # Re-run setupMIT License - feel free to customize and share!
Happy coding! π
Now go make some coffee and enjoy your perfectly configured Neovim setup!