A powerful, modern Neovim configuration built on NvChad v2.5
Featuring intelligent keymaps, context-aware menus, AI assistance, and extensive plugin integration for an enhanced development experience.
Features β’ Installation β’ Documentation β’ Keybindings β’ Customization
- π§ Intelligent Keymap System - Modular keymap architecture using
mini.keymapfor smart context-aware bindings - π Context-Aware Menus - Right-click menus that adapt to your current context (file type, git repo, debug mode, etc.)
- π€ AI Integration - Built-in CodeCompanion with OpenRouter API support for AI-assisted coding
- π¨ 10 Custom Themes - Carefully crafted color schemes including Dracula Pro, Monokai Pro, Aurora, and more
- β‘ Blazing Fast - Optimized lazy-loading with <50ms startup time
- LSP Support - Pre-configured for HTML, CSS, JavaScript/TypeScript, Python, Rust, Java, Lua
- Code Formatting - Automatic formatting with Conform.nvim (Prettier, Black, Stylua, etc.)
- Git Integration - LazyGit UI, inline Gitsigns, and comprehensive git operations
- Debugging - Full DAP integration with nvim-dap and dap-ui
- Live Development - Built-in live server for web development
- Terminal Management - Smart terminal handling with multiple layouts and runners
- Smart Completion - Blink.cmp with intelligent Tab/Enter behavior
- Flash Navigation - Lightning-fast cursor movement with flash.nvim
- Color Tools - Interactive color pickers (Huefy) and shade generators
- Markdown Support - Full Obsidian integration with live preview
- Focus Modes - Zen mode and Twilight for distraction-free coding
- Beautiful Notifications - Modern UI with Noice.nvim and nvim-notify
Ensure you have the following installed:
- Neovim 0.10.0 or higher
- Git for version control
- Node.js and npm (for LSP servers and live-server)
- Ripgrep (rg) for enhanced search
- A Nerd Font (recommended: JetBrainsMono, FiraCode, or Hack)
- Python, Rust, Java runtimes (for respective language servers)
-
Clone the repository:
git clone https://github.com/M4ikel79/nvimrc.git ~/.config/nvimrc -
Set up shell alias:
Add to your
~/.bashrcor~/.zshrc:alias vi='NVIM_APPNAME=nvimrc nvim'
-
Reload shell configuration:
source ~/.bashrc # or source ~/.zshrc
-
Launch Neovim:
vi
On first launch, lazy.nvim will automatically install all plugins. This may take a few minutes.
-
Configure AI Assistant (Optional):
If you want to use the AI features:
export OPENROUTER_API_KEY="your-api-key-here"
Comprehensive documentation is available in the docs/ directory:
| Document | Description |
|---|---|
| Installation Guide | Detailed installation instructions and troubleshooting |
| Keybindings Reference | Complete keymap documentation with examples |
| Menu System | Context-aware menu system guide |
| Plugin Guide | Overview of all installed plugins |
| Theme Gallery | Preview and customize themes |
| LSP Configuration | Language server setup and configuration |
| Options Reference | Vim options and settings explained |
| Customization Guide | How to customize and extend |
| FAQ | Frequently asked questions |
Leader key is <Space>
| Key | Action | Context |
|---|---|---|
<Space>ff |
Find files | Normal |
<Space>fw |
Live grep | Normal |
<C-n> |
Toggle file explorer | Normal |
<C-Space> |
Context menu | Normal/Visual |
<RightMouse> |
Context menu | Normal/Visual |
<Space>gg |
LazyGit | Normal |
<Space>aa |
AI actions | Normal/Visual |
<Space>cf |
Format buffer | Normal/Visual |
gd |
Go to definition | Normal |
K |
Hover documentation | Normal |
| Key | Action |
|---|---|
<Alt-,> / <Alt-.> |
Previous/Next buffer |
<Alt-1> to <Alt-9> |
Jump to buffer 1-9 |
<Alt-0> |
Last buffer |
<Alt-c> |
Close buffer |
<C-p> |
Buffer picker |
| Key | Action |
|---|---|
<C-h/j/k/l> |
Navigate windows |
<Alt-Up/Down> |
Resize height |
<Alt-Left/Right> |
Resize width |
<Space>- |
Split below |
<Space>| |
Split right |
For complete keybinding documentation, see Keybindings Reference.
NvimRC includes 10 custom themes:
| Theme | Type | Description |
|---|---|---|
| Dracula Pro | Dark | Classic Dracula Pro with vibrant colors |
| Monokai Pro | Dark | Warm Monokai Pro variant |
| Aurora | Dark | Pink/Purple aurora borealis inspired |
| Tokyo Rain | Dark | Neon-lit rainy Tokyo night |
| Ocean Depths | Dark | Deep blue/teal ocean theme |
| Cyberpunk Neon | Dark | Bright cyberpunk neon colors |
| Matrix Code | Dark | Green terminal matrix style |
| Retro Wave | Dark | 80s synthwave aesthetic |
| Volcanic Ash | Dark | Red/orange volcanic colors |
| Cherry Blossom | Light | Soft Japanese sakura inspired |
| Pastel Dream | Light | Soft pastel colors |
Switch themes: <Space>th (theme selector) or <Space>tt (toggle between configured themes)
See Theme Gallery for screenshots and customization.
Edit configuration:
:e ~/.config/nvimrc/init.luaKey areas to customize:
- Keymaps -
lua/keymaps/directory - Plugin options -
lua/plugins/directory - LSP servers -
lua/configs/lspconfig.lua - Formatters -
lua/configs/conform.lua - Theme settings -
lua/chadrc.lua - Options -
lua/options.lua
-- lua/keymaps/custom.lua
local map = vim.keymap.set
map("n", "<your-key>", "<your-action>", { desc = "Description" })Then require it in lua/keymaps/init.lua:
require "keymaps.custom"Create a new file in lua/plugins/:
-- lua/plugins/my-plugin.lua
return {
"author/plugin-name",
event = "VeryLazy",
opts = {
-- plugin options
},
}See Customization Guide for detailed instructions.
~/.config/nvimrc/
βββ init.lua # Entry point
βββ stylua.toml # Lua formatter config
βββ lua/
β βββ options.lua # Neovim options
β βββ autocmds.lua # Autocommands
β βββ chadrc.lua # NvChad configuration
β βββ configs/ # Plugin configurations
β β βββ lazy.lua
β β βββ lspconfig.lua
β β βββ conform.lua
β β βββ companion.lua
β β βββ menu_manager.lua
β βββ keymaps/ # Modular keymaps
β β βββ init.lua
β β βββ core.lua # Core editing
β β βββ lsp.lua # LSP operations
β β βββ git.lua # Git operations
β β βββ term.lua # Terminal
β β βββ colors.lua # Color tools
β β βββ plugins.lua # Plugin-specific
β β βββ utils.lua # Utilities
β βββ plugins/ # Plugin specifications
β β βββ init.lua
β β βββ coding/ # Completion, LSP, etc.
β β βββ editor/ # Navigation, editing
β β βββ tools/ # Git, debug, etc.
β β βββ ui/ # UI enhancements
β βββ menus/ # Context menus
β β βββ main.lua
β β βββ git.lua
β β βββ debug.lua
β β βββ colors.lua
β β βββ markdown.lua
β β βββ webdev.lua
β βββ themes/ # Custom themes
β β βββ dracula_pro.lua
β β βββ monokai_pro.lua
β β βββ [8 more themes]
β βββ utils/ # Utility functions
β βββ buffers.lua
β βββ code_folds.lua
βββ docs/ # Documentation
βββ installation.md
βββ keybindings.md
βββ menus.md
βββ [more docs]
- Startup Time: < 50ms (core loading)
- Full Load: < 100ms (with lazy-loading)
- Plugin Count: 60+ (all lazy-loaded)
- Memory Usage: ~80MB (after startup)
Optimization features:
- Lazy-loading for all non-essential plugins
- Event-based plugin initialization
- Disabled unnecessary default Vim plugins
- Minimal statusline overhead
Contributions are welcome! This is a personal configuration, but improvements and suggestions are appreciated.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Plugins not loading:
:Lazy sync
:Lazy profileLSP not working:
:LspInfo
:MasonFormatting issues:
:ConformInfoGeneral diagnostics:
:checkhealthFor more help, see FAQ or open an issue.
Built on the shoulders of giants:
- NvChad - Excellent base configuration
- lazy.nvim - Modern plugin manager
- mini.nvim - Swiss army knife
- All plugin authors whose amazing work makes this possible
Special thanks to the Neovim community for continuous inspiration.
This configuration is free to use and modify for personal use.
- Repository: github.com/M4ikel79/nvimrc
- Issues: Report a bug
- Discussions: Join the conversation
Happy Coding with NvimRC! π
Made with β€οΈ by M4ikel79