My meticulously crafted Neovim setup built with Lua — modular, performant, and optimized for developer productivity.
A thoughtfully designed Neovim configuration that balances functionality, performance, and aesthetics. Built with a modular approach using Lua for maximum flexibility and maintainability.
- 🧩 Modular Architecture - Logically organized configuration split into maintainable files
- 🔌 Lazy-loaded Plugins - Optimized startup with lazy.nvim
- 🧠 Advanced LSP Support - Code intelligence with
mason.nvimfor easy LSP/DAP/linter management - 🎨 Elegant UI - Beautiful interface with statusline, bufferline, and carefully selected themes
- 🌲 Tree-sitter Integration - Enhanced syntax highlighting and code navigation
- 🔍 Fuzzy Finding - Powerful search capabilities with
telescope.nvim - 📝 Enhanced Editing - Smart pairs, surrounds, commenting, and substitutions
- 🧹 Code Quality Tools - Integrated formatting and linting
- 📂 File Management - Intuitive file explorer with
nvim-tree - 🔄 Git Integration - Seamless version control with
gitsigns.nvim - 📌 Task Management - TODO comment highlighting and navigation
- 💻 Language Support - Special configurations for C++ and other languages
- ⚡ Performance Optimized - Fast startup time without sacrificing functionality
- Neovim >= 0.9.0
- Git
- [Optional] A Nerd Font for icons
- [Optional] ripgrep for enhanced Telescope search
-
Back up your existing Neovim configuration:
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this repository:
git clone https://github.com/ankit02327/nvim-config.git ~/.config/nvim -
Start Neovim:
nvim
-
The plugin manager will automatically install all plugins on first launch.
.
├── init.lua # Entry point
├── lazy-lock.json # Plugin lockfile
├── lua
│ └── ankit # Main configuration namespace
│ ├── core # Core Neovim settings
│ │ ├── init.lua # Core module loader
│ │ ├── keymaps.lua # Key mappings
│ │ └── options.lua # Neovim options
│ ├── lazy.lua # Plugin manager setup
│ └── plugins # Plugin configurations
│ ├── alpha.lua # Dashboard
│ ├── autopairs.lua
│ ├── auto-session.lua
│ ├── bufferline.lua
│ ├── colorscheme.lua
│ ├── comment.lua
│ ├── dressing.lua
│ ├── formatting.lua
│ ├── gitsigns.lua
│ ├── indent-blankline.lua
│ ├── init.lua # Plugin module loader
│ ├── linting.lua
│ ├── lsp
│ │ ├── lspconfig.lua
│ │ └── mason.lua
│ ├── lualine.lua
│ ├── nvim-cmp.lua
│ ├── nvim-cpp.lua # C++ specific settings
│ ├── nvim-tree.lua
│ ├── substitute.lua
│ ├── surround.lua
│ ├── telescope.lua
│ ├── todo-comments.lua
│ ├── treesitter.lua
│ ├── trouble.lua
│ ├── vim-maximizer.lua
│ └── which-key.lua
└── README.md
- lazy.nvim - Modern plugin manager with lazy-loading
- which-key.nvim - Displays keybindings in popup
- auto-session - Automatic session management
- vim-maximizer - Window maximization utility
- vim-tmux-navigator - Seamless navigation between tmux and vim
- lualine.nvim - Statusline
- bufferline.nvim - Buffer tabs
- alpha-nvim - Startup dashboard
- nvim-tree.lua - File explorer
- indent-blankline.nvim - Indentation guides
- dressing.nvim - Improved UI components
- tokyonight.nvim - Elegant colorscheme
- nvim-web-devicons - Nerd Font icons
- mason.nvim - Package manager for LSP servers
- nvim-lspconfig - LSP configuration
- nvim-cmp - Completion engine
- treesitter - Syntax highlighting and text objects
- telescope.nvim - Fuzzy finder
- gitsigns.nvim - Git integration
- todo-comments.nvim - TODO comment highlighting
- trouble.nvim - Pretty diagnostics list
- mason-tool-installer.nvim - Automated third-party tool installation
- lazygit.nvim - Git interface inside Neovim
- markdown-preview.nvim - Markdown real-time previewer
- live-server.nvim - Live server for HTML/web dev
- LuaSnip - Snippet engine
- nvim-autopairs - Auto-close pairs
- nvim-surround - Add/change/delete surroundings
- Comment.nvim - Smart commenting
- substitute.nvim - Enhanced substitute commands
- conform.nvim - Powerful and fast formatting
- nvim-lint - Asynchronous linting framework
- nvim-ts-autotag - Auto close and rename HTML/XML tags
- nvim-ts-context-commentstring - Context-aware commenting
- Custom C++ Configuration - Enhanced support for C++ development
| Key Binding | Mode | Description |
|---|---|---|
<Space> |
Normal | Leader key |
jk |
Insert | Escape to Normal mode |
<C-s> |
Normal/Insert | Save file |
<C-h/j/k/l> |
Normal | Navigate between windows |
<leader>e |
Normal | Toggle file explorer |
<leader>ff |
Normal | Find files |
<leader>fg |
Normal | Live grep |
<leader>fb |
Normal | Find buffers |
<leader>ca |
Normal | Code actions |
<leader>nh |
Normal | Clear search highlights |
<leader>m |
Normal | Maximize current window |
Note: This is just a subset of available keymaps. Use <leader>? to see all key bindings.
This configuration is designed to be easily customizable:
- Modify core settings in
lua/ankit/core/options.lua - Change keymappings in
lua/ankit/core/keymaps.lua - Add or remove plugins by editing files in the
lua/ankit/plugins/directory - Adjust LSP settings in
lua/ankit/plugins/lsp/
Contributions are welcome! Feel free to submit a pull request or open an issue.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Josean Martinez's Neovim Tutorial - This configuration is largely based on this excellent guide
- Neovim - The future of Vim
- All the amazing plugin authors
- The Neovim community for inspiration and support
Crafted with ❤️ by ankit02327