DEV Community

Cover image for ๐Ÿš€ My Neovim Configuration
Manpreet Singh
Manpreet Singh

Posted on

๐Ÿš€ My Neovim Configuration

โญ If you find this config helpful, please star the repository! It motivates me to keep improving and adding new features.

A modern, feature-rich Neovim configuration built with Lua and managed by lazy.nvim. Organized, fast, and beautiful - just the way it should be.


๐Ÿ“ธ Screenshots

Dashboard

image

Coding Interface

image

File Explorer

image

Command Palette

image

โœจ Features

  • ๐ŸŽจ Beautiful UI - Catppuccin theme with optional transparency
  • ๐ŸŽฏ Centered Command Palette - Noice.nvim for beautiful cmdline with icons
  • ๐Ÿ“ฆ Smart Plugin Management - lazy.nvim with organized structure
  • ๐Ÿ” Fuzzy Finding - Snacks picker for files, grep, buffers
  • ๐ŸŒณ File Explorer - Snacks explorer (nvim-tree and oil.nvim also available)
  • ๐Ÿ’ก Full LSP Support - Auto-completion, diagnostics, and formatting
  • ๐ŸŽฏ GitHub Copilot - AI-powered code completion
  • ๐Ÿ”„ Git Integration - LazyGit integration with diff support
  • ๐Ÿ“Š Smart Statusline - Shows git status, diagnostics, and "I use Arch btw"
  • ๐Ÿงช Testing - vim-test integration
  • ๐Ÿ“ Markdown & API Preview - Live preview for markdown and Swagger/OpenAPI
  • ๐Ÿณ Docker Management - LazyDocker integration
  • ๐ŸŽญ Discord Presence - Show what you're coding with cord.nvim
  • ๐ŸŽต Now Playing - Dashboard shows current song via playerctl
  • ๐ŸŽจ Code Folding - nvim-ufo for smart folding
  • โšก Fast Startup - Optimized lazy loading (~80ms with 26+ plugins)

๐Ÿ“‹ Requirements

  • Neovim >= 0.9.0
  • Git
  • A Nerd Font (recommended: JetBrainsMono Nerd Font)
  • Node.js (for LSP servers and Copilot)
  • Ripgrep (for grep functionality)
  • LazyGit (optional, for git integration)
  • LazyDocker (optional, for docker management)
  • tmux (for splitting tabs)

๐Ÿš€ Installation

Linux/macOS

# Backup your existing config (if any)
mv ~/.config/nvim ~/.config/nvim.backup

# Clone this repository
git clone https://github.com/MannuVilasara/nvim.git ~/.config/nvim

# Start Neovim
nvim
Enter fullscreen mode Exit fullscreen mode

Lazy.nvim will automatically install all plugins on first launch.

๐Ÿ“ฆ Plugins

Plugins are organized into categories for better maintainability. See STRUCTURE.md for the complete organization guide.

Core

  • lazy.nvim - Modern plugin manager
  • plenary.nvim - Lua utility functions

UI & Appearance (lua/plugins/ui/)

  • catppuccin - Beautiful color scheme with transparency support
  • lualine.nvim - Customizable statusline with git, diagnostics, and OS info
  • bufferline.nvim - Buffer/tab line with navigation shortcuts
  • noice.nvim - Enhanced cmdline with centered popup and icons
  • nvim-web-devicons - File icons everywhere
  • nvim-colorizer.lua - Live color preview
  • dressing.nvim - Better UI for input/select
  • fidget.nvim - LSP progress notifications
  • snacks.nvim - Dashboard with now playing and utilities

Editor (lua/plugins/editor/)

  • nvim-treesitter - Better syntax highlighting and code understanding
  • nvim-autopairs - Auto-close brackets and quotes
  • comment.nvim - Smart commenting (gcc, gbc)
  • which-key.nvim - Keybinding hints popup
  • nvim-ufo - Smart code folding with treesitter
  • nvim-tree.lua - File explorer sidebar
  • oil.nvim - Edit filesystem like a buffer

LSP & Completion (lua/plugins/lsp/)

  • nvim-lspconfig - Easy LSP server configurations
  • nvim-cmp - Powerful completion engine
  • cmp-nvim-lsp - LSP completion source
  • cmp-buffer - Buffer word completion
  • cmp-path - File path completion
  • LuaSnip - Snippet engine
  • cmp_luasnip - Snippet completion source
  • none-ls.nvim - Formatting and linting
  • conform.nvim - Fast code formatter

Tools (lua/plugins/tools/)

  • copilot.lua - GitHub Copilot integration
  • toggleterm.nvim - Terminal management
  • lazydocker.nvim - Docker TUI integration
  • vim-test - Test runner
  • cord.nvim - Discord Rich Presence
  • nvim-tmux-navigation - Seamless tmux/vim navigation
  • rails.nvim - Ruby on Rails utilities
  • markdown-preview.nvim - Live markdown preview
  • swagger-preview.nvim - Swagger/OpenAPI preview

โŒจ๏ธ Key Bindings

General

  • <leader> is set to Space

Dashboard (Snacks)

  • f - Find File
  • n - New File
  • g - Find Text (Grep)
  • r - Recent Files
  • c - Open Config
  • L - Lazy Plugin Manager
  • q - Quit

Fuzzy Finding

  • <C-p> - Find Files
  • <leader><leader> - Recent Files
  • <leader>fb - Buffers
  • <leader>fg - Grep Files
  • <leader>p - Command Palette
  • <leader>fh - Help Pages
  • <leader>fc - Colorschemes
  • <leader>fk - Keymaps

File Explorer

  • <leader>ee - Toggle Explorer

Buffer Navigation

  • Tab - Next Buffer
  • Shift+Tab - Previous Buffer
  • <leader>bd - Delete Buffer
  • <leader>bb - Pick Buffer
  • <leader>b1-9 - Go to Buffer 1-9

Git

  • <leader>lg - LazyGit
  • <leader>gl - LazyGit Log (current file)

Scratch Buffer

  • <leader>sf - Toggle Scratch Buffer
  • <leader>S - Select Scratch Buffer

Code Folding (UFO)

  • zR - Open all folds
  • zM - Close all folds
  • za - Toggle fold under cursor
  • zj - Go to next fold
  • zk - Go to previous fold

Fidget Notifications (Demo)

  • <leader>na - Info notification
  • <leader>nb - Warning notification
  • <leader>nc - Notification with annotation
  • <leader>np - Progress spinner demo

๐ŸŽจ Customization

Transparency Toggle

Edit lua/plugins/ui/catppuccin.lua and change:

local transparent = true -- Set to false to disable transparency
Enter fullscreen mode Exit fullscreen mode

Changing Theme Variant

In lua/plugins/ui/catppuccin.lua, change the colorscheme command:

vim.cmd.colorscheme("catppuccin-mocha")  -- mocha, macchiato, frappe, or latte
Enter fullscreen mode Exit fullscreen mode

Adding Plugins

Add new plugin files in the appropriate category:

  • UI plugins โ†’ lua/plugins/ui/
  • Editor plugins โ†’ lua/plugins/editor/
  • LSP plugins โ†’ lua/plugins/lsp/
  • Tools โ†’ lua/plugins/tools/

They will be automatically loaded by lazy.nvim.

Modifying Keybindings

  • Core options: lua/core/options.lua (or lua/vim-options.lua if not migrated)
  • Plugin-specific: Edit the individual plugin file

๐Ÿ“ Project Structure

~/.config/nvim/
โ”œโ”€โ”€ init.lua                    # Entry point with lazy.nvim setup
โ”œโ”€โ”€ lazy-lock.json              # Plugin version lock file
โ”œโ”€โ”€ STRUCTURE.md                # Organization guide
โ”œโ”€โ”€ reorganize.sh               # Migration script
โ”œโ”€โ”€ README.md                   # This file
โ”‚
โ”œโ”€โ”€ lua/
โ”‚   โ”œโ”€โ”€ core/                   # Core configuration (optional, organized structure)
โ”‚   โ”‚   โ””โ”€โ”€ options.lua         # Vim options and settings
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ vim-options.lua         # Vim options (legacy, can be migrated to core/)
โ”‚   โ”œโ”€โ”€ plugins.lua             # Lazy.nvim bootstrap
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ plugins/                # Plugin configurations (organized by category)
โ”‚       โ”œโ”€โ”€ ui/                 # UI & Appearance
โ”‚       โ”‚   โ”œโ”€โ”€ catppuccin.lua
โ”‚       โ”‚   โ”œโ”€โ”€ lualine.lua
โ”‚       โ”‚   โ”œโ”€โ”€ bufferline.lua
โ”‚       โ”‚   โ”œโ”€โ”€ noice.lua
โ”‚       โ”‚   โ”œโ”€โ”€ snacks.lua
โ”‚       โ”‚   โ”œโ”€โ”€ dressing.lua
โ”‚       โ”‚   โ”œโ”€โ”€ fidget.lua
โ”‚       โ”‚   โ””โ”€โ”€ nvim-colorizer.lua
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ editor/             # Editor enhancements
โ”‚       โ”‚   โ”œโ”€โ”€ treesitter.lua
โ”‚       โ”‚   โ”œโ”€โ”€ autopairs.lua
โ”‚       โ”‚   โ”œโ”€โ”€ comment.lua
โ”‚       โ”‚   โ”œโ”€โ”€ which-key.lua
โ”‚       โ”‚   โ”œโ”€โ”€ ufo.lua
โ”‚       โ”‚   โ”œโ”€โ”€ nvim-tree.lua
โ”‚       โ”‚   โ””โ”€โ”€ oil.lua
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ lsp/                # LSP & Completion
โ”‚       โ”‚   โ”œโ”€โ”€ lsp-config.lua
โ”‚       โ”‚   โ”œโ”€โ”€ completions.lua
โ”‚       โ”‚   โ”œโ”€โ”€ none-ls.lua
โ”‚       โ”‚   โ””โ”€โ”€ formatting.lua
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ git/                # Git tools (future)
โ”‚       โ”‚
โ”‚       โ””โ”€โ”€ tools/              # Development tools
โ”‚           โ”œโ”€โ”€ copilot.lua
โ”‚           โ”œโ”€โ”€ toggleterm.lua
โ”‚           โ”œโ”€โ”€ lazydocker.lua
โ”‚           โ”œโ”€โ”€ vim-test.lua
โ”‚           โ”œโ”€โ”€ cord.lua
โ”‚           โ””โ”€โ”€ ...
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”ง Troubleshooting

Plugins not installing

# Inside Neovim
:Lazy sync
Enter fullscreen mode Exit fullscreen mode

LSP not working

# Inside Neovim
:LspInfo
:Mason
Enter fullscreen mode Exit fullscreen mode

Treesitter errors

# Inside Neovim
:TSUpdate
Enter fullscreen mode Exit fullscreen mode

๐Ÿ’ก Tips

  1. Health Check - Use :checkhealth to diagnose issues
  2. Plugin Manager - Run :Lazy to manage plugins
  3. LSP Servers - Use :Mason to install LSP servers, formatters, and linters
  4. Keybinding Help - Press <leader> and wait to see available keybindings (which-key)
  5. Transparency - Toggle in lua/plugins/ui/catppuccin.lua with one line
  6. Now Playing - Dashboard shows your current song via playerctl (Spotify, VLC, etc.)
  7. Command Palette - Press : for centered command palette with icons
  8. Code Folding - Use za to toggle folds, zR/zM to open/close all

๐Ÿ™ Acknowledgments

Thanks to the Neovim community and all plugin authors for their amazing work!

Special thanks to:

  • folke - For lazy.nvim, noice.nvim, and snacks.nvim
  • catppuccin - For the beautiful theme
  • The entire Neovim community for making this possible

โญ Support

If this configuration helped you or inspired your setup, please consider:

  • โญ Starring the repository - It really motivates me!
  • ๐Ÿด Forking and customizing - Make it your own
  • ๐Ÿ› Reporting issues - Help improve it for everyone
  • ๐Ÿ’ฌ Sharing feedback - Let me know what you think

Star the repo if you found it helpful! It means a lot to me! โญ


Note: I use Arch btw ๐Ÿง

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.