Note
This is a git submodule of edheltzel/dotfiles. The standalone repository is available at github.com/edheltzel/neoed
A carefully crafted Neovim configuration built on LazyVim, featuring extensive customizations, language support, and AI-powered tooling.
Warning
This is my personal Neovim setup and changes often. It's designed for my workflow and preferences. Feel free to get inspired, take what you want, and leave the rest to make it your own.
Table of Contents:
- Features
- Prerequisites
- Installation
- Configuration Structure
- Key Bindings
- Plugin Highlights
- Language Support
- Theme & UI
- AI Integration
- Troubleshooting
Features β
- LazyVim Foundation - Built on LazyVim for a modern, modular setup
- AI-Powered Coding - Claude Code, Codeium, and Windsurf integration
- Multi-Language Support - Go, Python, Rust, TypeScript, PHP, Elixir, and more
- Custom Keybindings - Vim motions with modern IDE shortcuts
- Performance Optimized - Lazy loading and minimal startup time
- Beautiful UI - Rose Pine theme with custom Lualine statusline
- Git Integration - LazyGit, Gitsigns, and GitHub CLI
- Modal Editing - Extensive custom keybindings for efficient editing
- Snacks Dashboard - Custom start screen with quick actions
Prerequisites β
- Neovim >= 0.9.0
- Git >= 2.19.0
- A Nerd Font (recommended: JetBrainsMono Nerd Font)
- ripgrep (for Telescope)
- fd (for file finding)
- Node.js >= 18.0.0 (for LSP servers)
- A terminal with true color support
For the full dotfiles setup:
cd ~/.dotfiles && make stow pkg=nvimInstallation β
As part of dotfiles (recommended)
This configuration is managed as a git submodule in my dotfiles. To install:
-
Clone dotfiles with submodules:
git clone --recurse-submodules https://github.com/edheltzel/dotfiles.git ~/.dotfiles -
Stow the nvim package:
cd ~/.dotfiles make stow pkg=nvim
-
Launch Neovim and let lazy.nvim install plugins:
nvim
Standalone installation
If you want to use this configuration standalone (outside of the dotfiles):
-
Backup your existing Neovim configuration:
mv ~/.config/nvim ~/.config/nvim.backup mv ~/.local/share/nvim ~/.local/share/nvim.backup
-
Clone this repository:
git clone https://github.com/edheltzel/neoed.git ~/.config/nvim -
Launch Neovim:
nvim
Configuration Structure β
The configuration follows a modular architecture for maintainability:
lua/
βββ config/ # Core configuration
β βββ lazy.lua # Plugin manager bootstrap
β βββ options.lua # Vim options
β βββ keymaps.lua # Custom keybindings
β βββ autocmds.lua # Autocommands
β βββ filetypes.lua # Filetype detection
βββ plugins/ # Plugin configurations (organized by category)
βββ ai/ # AI integrations
β βββ claudecode.lua # Claude Code config
β βββ opencode.lua # OpenCode config
β βββ windsurf.lua # Windsurf/Codeium
βββ coding/ # Code editing tools
β βββ emmet.lua # Emmet expansion
β βββ surround.lua # Surround text objects
βββ editor/ # Editor enhancements
β βββ git.lua # Git integration
β βββ multicursor.lua # Multi-cursor editing
βββ formatting/ # Code formatting
β βββ prettier.lua # Prettier config
βββ languages/ # Language-specific configs
β βββ go.lua
β βββ python.lua
β βββ typescript.lua
β βββ php.lua
β βββ laravel.lua
β βββ ...
βββ linting/ # Linting tools
β βββ biome.lua # Biome linter
βββ ui/ # UI components
β βββ colorscheme.lua # Theme config
β βββ lualine.lua # Statusline
β βββ lualine/ # Custom themes
β βββ neoed.lua
β βββ eldritch.lua
β βββ rose-pine.lua
βββ utils/ # Utility plugins
β βββ snacks.lua # Snacks dashboard & utilities
βββ disabled.lua # Disabled plugins
Key Bindings β
Leader key: <Space>
| Key | Action |
|---|---|
jj / jk |
Exit INSERT mode |
U |
Redo (shift+u) |
gh / gl |
Jump to beginning/end of line |
<Alt-j/k> |
Move lines up/down |
<Alt-C-Up/Down> |
Duplicate lines up/down |
<Enter> |
Toggle code folding |
<leader>nh |
Clear search highlights |
<leader>ih |
Toggle inlay hints |
| Key | Action |
|---|---|
<leader>fs |
Save file |
<C-h/j/k/l> |
Navigate splits |
<C->` |
Toggle terminal |
| Key | Action |
|---|---|
<C-A-S-c> |
Toggle Claude Code (floating) |
<leader>ac |
Toggle Claude |
<leader>af |
Focus Claude |
<leader>ab |
Add current buffer to context |
<leader>aa |
Accept diff |
<leader>ad |
Deny diff |
| Key | Action |
|---|---|
<leader>jj |
Flash jump (leap to character) |
<C-n> |
Multi-word editing |
| Key | Action |
|---|---|
<leader>gg |
LazyGit (borderless) |
Plugin Highlights β
- lazy.nvim - Modern plugin manager with lazy loading
- LazyVim - Neovim configuration framework
- snacks.nvim - Dashboard, picker, explorer, terminal, and utilities
- nvim-treesitter - Syntax highlighting and code parsing
- nvim-lspconfig - LSP configuration for language servers
- which-key - Keybinding discovery and documentation
- flash.nvim - Enhanced navigation and search
- LazyGit - Git integration with TUI
- harpoon2 - Quick file navigation
- mini-files - File explorer alternative
- conform.nvim - Code formatting
Language Support β
The following languages are configured with LSP, formatting, and linting via LazyVim extras:
Core Languages:
- Go (gopls, gofumpt, staticcheck)
- Python (pyright, ruff)
- Rust (rust-analyzer)
- TypeScript/JavaScript (typescript-language-server, biome)
- PHP (intelephense, Laravel support)
- Elixir
Frontend:
- Angular
- Astro
- Svelte
- Vue
- Tailwind CSS
Infrastructure:
- Docker
- Helm
- Terraform
- Twig
Config/Data:
- YAML
- TOML
- JSON
- Markdown (with MDX support)
- Jinja templates
Theme & UI β
- Colorscheme: Rose Pine Moon (also supports Eldritch)
- Statusline: Custom Lualine with auto-detecting theme
- Dashboard: Custom Snacks dashboard with NOE.ED branding
- Explorer: Snacks explorer (neo-tree disabled)
- Icons: Nerd Font icons throughout
- Cursor: Cursorline and cursorcolumn enabled
The UI is designed to be clean, distraction-free, and aesthetically pleasing while remaining functional. The Lualine statusline auto-detects the current colorscheme and applies matching colors.
AI Integration β
This configuration includes multiple AI-powered tools:
-
Claude Code - AI pair programmer with deep codebase understanding
- Toggle floating window with
<C-A-S-c>(Ctrl+Alt+Shift+C) - Toggle with
<leader>ac - Add context with
<leader>ab - Accept/deny diffs with
<leader>aa/<leader>ad - Runs in a centered floating terminal (80% width/height)
- Toggle floating window with
-
Codeium - AI code completion (via LazyVim extra)
- Real-time inline suggestions
- Context-aware completions
-
Windsurf - Additional AI coding assistance
- Alternative completion engine
Troubleshooting β
Plugins not loading
Try removing the lazy.nvim cache:
rm -rf ~/.local/share/nvim
nvimThen restart Neovim and run :Lazy sync.
LSP not working
Check if the language server is installed:
:LspInfoInstall missing servers with Mason:
:MasonTreesitter errors
Update treesitter parsers:
:TSUpdateOr install specific parser:
:TSInstall <language>Git submodule issues
If this configuration is out of sync as a submodule:
cd ~/.dotfiles/nvim/.config/nvim
git pull origin master
cd ~/.dotfiles
git add nvim/.config/nvim
git commit -m "Update neoed submodule"Performance issues
Check startup time:
nvim --startuptime startup.logDisable plugins temporarily by commenting them out in lua/plugins/.
Built with β€οΈ by @edheltzel