Personal Neovim configuration built on NvChad v2.5 with comprehensive support for Python, JavaScript/TypeScript, and modern web development.
- Python: Pyright, mypy, ruff, black, debugpy
- JavaScript/TypeScript: TypeScript tools, ESLint, Prettier
- Web: HTML, CSS, Tailwind CSS with IntelliSense
- Auto-close & rename HTML/JSX tags
- LSP: Full language server support with auto-completion
- Debugging: DAP integration with VS Code-style keybindings (F5-F12)
- Git: LazyGit integration
- AI: Claude Code assistant (
Space c c) - Formatting: Auto-format on save with black, prettier, eslint
- Linting: mypy, ruff, eslint_d
- Note-taking: Telekasten with calendar integration (
Space z) - Remote editing: Edit files on remote servers via SSHFS (
Space r c)
- Rainbow delimiters: Color-coded brackets/parentheses
- Treesitter: Advanced syntax highlighting and text objects
- Tmux integration: Seamless pane navigation
- 11 themes available via NvChad
- Neovim 0.11+
- Lazygit (for git integration)
- Node.js (for JS/TS language servers) - https://nodejs.org/en/download
- Go (for some tools)
- Python virtual environment with project dependencies
- sshfs (for remote file editing) -
sudo apt install sshfs
- Clone this repository to your Neovim config directory:
git clone https://github.com/mukor/nvim.git ~/.config/nvim- Open Neovim - plugins will automatically install:
nvim-
Wait for lazy.nvim to install all plugins
-
Wait for Mason to install language servers and tools
-
Verify installation:
:checkhealth# Activate virtual environment
source venv/bin/activate
# Open Neovim
nvim .| Action | Keybinding |
|---|---|
| Command mode | ; |
| Exit insert mode | jk |
| LazyGit | Space g g |
| Claude Code | Space c c |
| Toggle breakpoint | Space d b or F9 |
| Start debugging | Space d c or F5 |
| Step over | Space d o or F10 |
| Step into | Space d i or F11 |
| Step out | Space d u or F12 |
| Telekasten panel | Space z |
| Find notes | Space z f |
| Search notes | Space z g |
| New note | Space z n |
| Daily note | Space z d |
| Toggle todo | Space z t |
| Show backlinks | Space z b |
| Follow link | Space z z |
| Show calendar | Space z c |
| Insert image | Space z I |
| Markdown preview | Space m p |
| Insert symbol/emoji | Space s e |
| Connect to remote | Space r c |
| Disconnect remote | Space r d |
| Edit SSH config | Space r e |
| Find files (remote) | Space r f |
| Grep (remote) | Space r g |
See CONFIG_SUMMARY.md for complete keybinding list.
- mason.nvim - Package manager for LSP servers
- mason-tool-installer.nvim - Auto-installs tools
- mason-null-ls.nvim - Bridges Mason and none-ls
- nvim-lspconfig - LSP configurations
- pyright - Python type checking
- ruff - Python linting
- typescript-language-server - JS/TS support
- eslint - JavaScript/TypeScript linting
- tailwindcss - Tailwind CSS IntelliSense
- none-ls.nvim (formerly null-ls) - Linting/formatting integration
- conform.nvim - Format orchestration
- black - Python formatter
- prettier - JS/TS/HTML/CSS formatter
- mypy - Python type checker
- nvim-dap - Debug Adapter Protocol
- nvim-dap-ui - Debugging UI
- nvim-dap-python - Python debugging
- debugpy - Python debug adapter
- lazygit.nvim - Git interface
- claude-code.nvim - AI assistant
- tmux.nvim - Tmux integration
- package-info.nvim - npm package manager
- telekasten.nvim - Zettelkasten note-taking (notes stored in
~/notes) - calendar-vim - Calendar integration for Telekasten
- telescope-media-files.nvim - Image preview in Telescope
- markdown-preview.nvim - Live markdown preview in browser
- telescope-symbols.nvim - Emoji and symbol picker
- remote-sshfs.nvim - Edit remote files via SSHFS
- nvim-treesitter - Advanced syntax highlighting
- rainbow-delimiters.nvim - Colored brackets
- nvim-ts-autotag - Auto-close HTML/JSX tags
Zettelkasten-style note-taking with wiki-links, tags, and calendar integration.
mkdir -p ~/notesSpace zopens the Telekasten panel with all commands- Create wiki-links with
[[note-name]]syntax - Add tags with
#tag - Use
:Telekasten show_calendarfor visual date navigation
- Days with notes show a
+symbol - Press
Enteron a date to open/create that day's note :CalendarTfor full-screen calendar view
Telekasten uses viu for image previews. Install the appropriate backend for your platform:
| Platform | Install Command | Preview Quality | Notes |
|---|---|---|---|
| WSL2 (Windows Terminal) | cargo install viu --features=sixel |
Block characters | Neovim's terminal doesn't pass through Sixel |
| macOS (iTerm2) | brew install viu |
Smooth images | iTerm2 protocol supported natively |
| Ubuntu/Linux | sudo apt install ueberzugpp |
Pixel-perfect | ueberzugpp renders outside Neovim |
WSL2 + Windows Terminal:
- Windows Terminal supports Sixel (v1.22+), and
viuworks perfectly in the terminal directly - However, Neovim's built-in terminal emulator doesn't pass Sixel escape sequences to the outer terminal
- Result: Block character (▄) previews inside Neovim, which are functional but not smooth
- Workaround: Use WezTerm with SSH, or accept block previews
macOS (iTerm2):
- viu auto-detects iTerm2 and uses native image protocol
- Smooth image previews should work out of the box
Ubuntu/Linux:
- ueberzugpp renders images as overlays outside Neovim's terminal
- Provides pixel-perfect image previews
- Requires X11 or Wayland
Usage:
:Telekasten insert_img_link- Browse and insert images with preview:Telescope media_files- Browse media files directly
~/.config/nvim/
├── init.lua # Entry point
├── lua/
│ ├── chadrc.lua # NvChad theme (onedark)
│ ├── options.lua # Editor options
│ ├── mappings.lua # Keybindings
│ ├── configs/ # Plugin configurations
│ │ ├── lspconfig.lua
│ │ ├── null-ls.lua
│ │ ├── dap.lua
│ │ └── ...
│ └── plugins/init.lua # Plugin declarations
└── README.md # This file
- CONFIG_SUMMARY.md - Complete configuration reference with all plugins, keybindings, and workflows
- CLAUDE.md - Architecture guide for AI assistants
- ✅ Neovim 0.11+ (uses modern
vim.lsp.configAPI) - ✅ NvChad v2.5
- ✅ Supports Python 3.13 (paths configurable)
- ✅ Virtual environment detection via
$VIRTUAL_ENV
:LspInfo
:checkhealth lsp:Mason
:checkhealth mason- Ensure
$VIRTUAL_ENVis set - Check debugpy is installed:
:Mason
This is a personal configuration, but feel free to fork and adapt for your needs.
See LICENSE file.
Built with NvChad v2.5