A modern, organized, and feature-rich Neovim configuration built for productivity
This is my personal configuration for Neovim, designed to provide a powerful yet maintainable development environment.
- π¨ Dual Theme Support - Switch between Nord and Gruvbox themes on the fly
- π¦ Organized Plugin Structure - Plugins categorized by functionality (UI, LSP, Git, etc.)
- β‘ Lazy Loading - Fast startup times with lazy.nvim
- π§ LSP Ready - Complete LSP setup with Mason, formatters, and linters
- π² Git Integration - LazyGit, Fugitive, and GitSigns for seamless Git workflows
- π€ AI Copilot - GitHub Copilot integration for AI-assisted coding
- π Telescope - Powerful fuzzy finder for files, text, and more
- π DAP Support - Debug Adapter Protocol for debugging
- π Auto-formatting - Format on save with language-specific formatters
I built this configuration as part of my personal development environment. It's a completely personalized workspace tailored to my workflow, avoiding the bloat of VS Code or JetBrains IDEs while maintaining professional-grade features.
- Neovim >= 0.9.0
- Git >= 2.19.0
- Node.js (for LSP servers)
- A Nerd Font for icons
The easiest way to install is using the automated installation script.
Supported platforms: macOS (Homebrew), Debian/Ubuntu (apt)
# Clone the repository
git clone https://github.com/dotbrains/nvim ~/.config/nvim
# Run the installer
cd ~/.config/nvim
./install.shThe script will:
- β Detect your operating system
- β Check and install Neovim (if needed)
- β Install all dependencies (via Homebrew or apt)
- β Backup your existing configuration
- β Install lazy.nvim
- β Install all plugins automatically
Using Homebrew (macOS):
brew install nvimbrew install \
lazygit \
lua-language-server \
efm-langserver \
ripgrep \
fd \
code-minimap \
deno \
stylua \
google-java-format \
prettierBackup your existing config (if any):
mv ~/.config/nvim ~/.config/nvim.backupClone this repository:
git clone https://github.com/dotbrains/nvim ~/.config/nvimnvimLazy.nvim will automatically install all plugins on first launch.
After installation, run the health check:
:checkhealthOr from the command line:
make healthnvim/
βββ init.lua # Entry point
βββ lua/
β βββ config/ # Core configuration
β β βββ autocmds.lua # Auto commands
β β βββ globals.lua # Global variables
β β βββ init.lua # Config initialization
β β βββ keymaps.lua # Key mappings
β β βββ options.lua # Vim options
β β βββ theme.lua # Theme switching logic
β βββ plugins/ # Plugin configurations
β β βββ ui/ # UI & appearance plugins
β β βββ editor/ # Editor enhancements
β β βββ lsp/ # LSP & language tools
β β βββ git/ # Git integrations
β β βββ terminal/ # Terminal plugins
β β βββ completion/ # Completion & snippets
β β βββ debug/ # Debugging tools
β βββ util/ # Utility functions
βββ .stylua.toml # Stylua formatter config
Switch between Nord and Gruvbox themes using:
<leader>tt
(By default, <leader> is the spacebar)
For a complete list of keybindings, see KEYBINDINGS.md.
| Mode | Key | Action |
|---|---|---|
| Normal | <leader>tt |
Toggle theme |
| Normal | <leader>e |
Toggle file explorer |
| Normal | <leader>ff |
Find files |
| Normal | <leader>fg |
Live grep |
| Normal | <leader>gg |
LazyGit |
- Add the theme plugin to
lua/plugins/ui/ - Update
lua/config/theme.luato include the new theme in thethemestable
Edit lua/config/keymaps.lua to customize keybindings.
Add new plugin configuration files to the appropriate directory under lua/plugins/.
You can test this configuration in a clean Ubuntu/Debian environment using Docker:
# Ubuntu 22.04
docker run -it --rm ubuntu:22.04 bash -c "
apt-get update &&
apt-get install -y git curl sudo &&
git clone https://github.com/dotbrains/nvim /root/.config/nvim &&
cd /root/.config/nvim &&
./install.sh
"
# Debian 12
docker run -it --rm debian:12 bash -c "
apt-get update &&
apt-get install -y git curl sudo &&
git clone https://github.com/dotbrains/nvim /root/.config/nvim &&
cd /root/.config/nvim &&
./install.sh
"# Start a container
docker run -it --rm ubuntu:22.04 bash
# Inside the container
apt-get update
apt-get install -y git curl sudo
git clone https://github.com/dotbrains/nvim /root/.config/nvim
cd /root/.config/nvim
./install.sh
# Test nvim
nvimCreate a Dockerfile.test for persistent testing:
FROM ubuntu:22.04
# Install base dependencies
RUN apt-get update && \
apt-get install -y git curl sudo && \
rm -rf /var/lib/apt/lists/*
# Clone configuration
RUN git clone https://github.com/dotbrains/nvim /root/.config/nvim
# Run installer
WORKDIR /root/.config/nvim
RUN ./install.sh
# Set working directory
WORKDIR /root
CMD ["nvim"]Build and run:
# Build image
docker build -f Dockerfile.test -t nvim-test .
# Run container
docker run -it --rm nvim-testThis configuration includes a Makefile for common tasks:
make help # Show all available commands
make update # Update all plugins
make clean # Clean cache and temporary files
make format # Format Lua files with stylua
make lint # Lint Lua files
make health # Run health check
make check # Run all checks (format + lint + health)
make backup # Backup current configuration
make restore # Restore from latest backup
make test # Test configuration loads:Lazy update:Lazy:LspInfoCode is automatically formatted on save. To manually format:
:lua vim.lsp.buf.format():checkhealthThis is a personal configuration, but feel free to fork it and make it your own!
Contributions are welcome! Please see CONTRIBUTING.md for:
- How to report bugs
- How to suggest features
- Development setup
- Coding guidelines
- Pull request process
If you find bugs or have suggestions, please open an issue.
This project is licensed under the terms found in LICENSE.
Built with inspiration from the Neovim community and various dotfile configurations.