Skip to content

M4ikel79/nvimrc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NvimRC - Modern Neovim Configuration

Neovim License Platform

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


✨ Features

🎯 Core Capabilities

  • 🧠 Intelligent Keymap System - Modular keymap architecture using mini.keymap for 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

πŸ› οΈ Development Tools

  • 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

🎨 UI & Experience

  • 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

πŸ“¦ Installation

Prerequisites

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)

Quick Start

  1. Clone the repository:

    git clone https://github.com/M4ikel79/nvimrc.git ~/.config/nvimrc
  2. Set up shell alias:

    Add to your ~/.bashrc or ~/.zshrc:

    alias vi='NVIM_APPNAME=nvimrc nvim'
  3. Reload shell configuration:

    source ~/.bashrc  # or source ~/.zshrc
  4. Launch Neovim:

    vi

    On first launch, lazy.nvim will automatically install all plugins. This may take a few minutes.

  5. Configure AI Assistant (Optional):

    If you want to use the AI features:

    export OPENROUTER_API_KEY="your-api-key-here"

πŸ“š Documentation

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

⌨️ Keybindings

Quick Reference

Leader key is <Space>

Essential Bindings

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

Buffer Navigation

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

Window Management

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.


🎨 Themes

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.


πŸ”§ Customization

Quick Customization

Edit configuration:

:e ~/.config/nvimrc/init.lua

Key areas to customize:

  1. Keymaps - lua/keymaps/ directory
  2. Plugin options - lua/plugins/ directory
  3. LSP servers - lua/configs/lspconfig.lua
  4. Formatters - lua/configs/conform.lua
  5. Theme settings - lua/chadrc.lua
  6. Options - lua/options.lua

Adding Custom Keymaps

-- 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"

Adding Plugins

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.


πŸ“ Project Structure

~/.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]

πŸš€ Performance

  • 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

🀝 Contributing

Contributions are welcome! This is a personal configuration, but improvements and suggestions are appreciated.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ› Troubleshooting

Common Issues

Plugins not loading:

:Lazy sync
:Lazy profile

LSP not working:

:LspInfo
:Mason

Formatting issues:

:ConformInfo

General diagnostics:

:checkhealth

For more help, see FAQ or open an issue.


πŸ“ Acknowledgments

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.


πŸ“„ License

This configuration is free to use and modify for personal use.


πŸ”— Links


Happy Coding with NvimRC! πŸš€

Made with ❀️ by M4ikel79

About

My personal neovim setup

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages