Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

🚀 Neovim Configuration

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.

✨ Features

  • 🧩 Modular Architecture - Logically organized configuration split into maintainable files
  • 🔌 Lazy-loaded Plugins - Optimized startup with lazy.nvim
  • 🧠 Advanced LSP Support - Code intelligence with mason.nvim for 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

📋 Requirements

  • Neovim >= 0.9.0
  • Git
  • [Optional] A Nerd Font for icons
  • [Optional] ripgrep for enhanced Telescope search

🔧 Installation

  1. Back up your existing Neovim configuration:

    mv ~/.config/nvim ~/.config/nvim.backup
  2. Clone this repository:

    git clone https://github.com/ankit02327/nvim-config.git ~/.config/nvim
  3. Start Neovim:

    nvim
  4. The plugin manager will automatically install all plugins on first launch.

📁 Configuration Structure

.
├── 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

⌨️ Key Features and Plugins

Core Experience

User Interface

Development Tools

Editing Enhancements

Language-Specific Support

  • Custom C++ Configuration - Enhanced support for C++ development

🎮 Default Keymaps

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.

🔧 Customization

This configuration is designed to be easily customizable:

  1. Modify core settings in lua/ankit/core/options.lua
  2. Change keymappings in lua/ankit/core/keymaps.lua
  3. Add or remove plugins by editing files in the lua/ankit/plugins/ directory
  4. Adjust LSP settings in lua/ankit/plugins/lsp/

🤝 Contributing

Contributions are welcome! Feel free to submit a pull request or open an issue.

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

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgements

  • 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

About

A clean and modular Neovim configuration featuring custom plugins, Lua-based setup, and a personalized development environment.

Topics

Resources

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages