NvChad
Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.
Top Related Projects
Neovim config for the lazy
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins
A modular Vim/Neovim configuration
💤 A modern plugin manager for Neovim
A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config
Quick Overview
NvChad is a Neovim configuration framework that aims to provide a fast, beautiful, and feature-rich development environment. It offers a pre-configured setup with carefully selected plugins and optimizations, making it easy for users to get started with a powerful Neovim setup without spending hours on configuration.
Pros
- Easy to install and set up, providing a ready-to-use Neovim configuration
- Highly customizable with a modular structure and easy-to-modify configuration files
- Optimized for performance, with fast startup times and efficient plugin management
- Aesthetically pleasing with a modern UI and customizable themes
Cons
- May have a learning curve for users new to Neovim or advanced configurations
- Some users might find the default configuration too opinionated or feature-rich
- Occasional compatibility issues with certain plugins or system configurations
- Regular updates may require manual intervention to keep the setup current
Getting Started
To install NvChad, follow these steps:
- Ensure you have Neovim 0.9.0 or later installed.
- Back up your existing Neovim configuration:
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
- Clone the NvChad repository:
git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1
- Run Neovim and let it install plugins:
nvim
After installation, you can customize NvChad by modifying the files in ~/.config/nvim/lua/custom/
. Refer to the official documentation for more detailed instructions on customization and usage.
Competitor Comparisons
Neovim config for the lazy
Pros of LazyVim
- More modular and customizable structure
- Extensive documentation and user guides
- Active community with frequent updates and contributions
Cons of LazyVim
- Steeper learning curve for beginners
- May require more configuration to achieve desired setup
Code Comparison
LazyVim:
-- LazyVim configuration example
require("lazy").setup({
spec = {
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
{ import = "plugins" },
},
defaults = { lazy = true },
install = { colorscheme = { "tokyonight", "habamax" } },
})
NvChad:
-- NvChad configuration example
local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1]
if custom_init_path then
dofile(custom_init_path)
end
require("core.utils").load_mappings()
Both LazyVim and NvChad are popular Neovim configurations that aim to enhance the user experience. LazyVim offers a more modular approach with extensive documentation, making it highly customizable but potentially more complex for beginners. NvChad, on the other hand, provides a more streamlined setup that may be easier for newcomers to adopt. The code examples demonstrate the different approaches to configuration and plugin management in each project.
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
Pros of LunarVim
- More extensive built-in language support and LSP configurations
- Includes a wider range of pre-configured plugins out of the box
- Offers a more opinionated setup, which can be beneficial for beginners
Cons of LunarVim
- Heavier and potentially slower startup time due to more pre-configured features
- Less minimalistic approach, which may not appeal to users who prefer a leaner setup
- Steeper learning curve for customization due to its more complex structure
Code Comparison
LunarVim configuration example:
lvim.builtin.alpha.active = true
lvim.builtin.alpha.mode = "dashboard"
lvim.builtin.terminal.active = true
lvim.builtin.nvimtree.setup.view.side = "left"
lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
NvChad configuration example:
local M = {}
M.ui = {
theme = "onedark",
transparency = false,
}
M.plugins = {
user = require "custom.plugins"
}
return M
Both NvChad and LunarVim offer pre-configured Neovim setups, but LunarVim provides a more feature-rich experience out of the box, while NvChad focuses on a minimalistic and fast configuration. LunarVim may be better suited for users who want a comprehensive setup with minimal initial configuration, while NvChad appeals to those who prefer a lighter base to build upon.
AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins
Pros of AstroNvim
- More extensive plugin ecosystem with a wider range of pre-configured options
- Built-in project management and session handling capabilities
- Advanced diagnostics and debugging features out of the box
Cons of AstroNvim
- Steeper learning curve due to more complex configuration options
- Potentially slower startup time due to the larger number of pre-installed plugins
- May require more system resources compared to NvChad
Code Comparison
AstroNvim configuration example:
return {
colorscheme = "astrodark",
lsp = {
formatting = {
format_on_save = true,
timeout_ms = 1000,
},
},
}
NvChad configuration example:
local M = {}
M.ui = {
theme = "onedark",
}
M.plugins = {
"nvim-treesitter",
"nvim-lspconfig",
}
return M
Both NvChad and AstroNvim offer powerful Neovim configurations, but they cater to slightly different user preferences. NvChad focuses on simplicity and speed, while AstroNvim provides a more feature-rich environment with additional built-in functionalities. The choice between the two depends on individual needs and the desired level of customization.
A modular Vim/Neovim configuration
Pros of SpaceVim
- More extensive plugin ecosystem and layer system for easy configuration
- Better support for multiple programming languages out of the box
- Includes a built-in package manager (dein.vim)
Cons of SpaceVim
- Steeper learning curve due to its complexity
- Slower startup time compared to NvChad
- Less focus on modern Neovim features and APIs
Code Comparison
SpaceVim configuration example:
let g:spacevim_enable_debug = 1
let g:spacevim_realtime_leader_guide = 1
call SpaceVim#layers#load('lang#python')
call SpaceVim#layers#load('lang#javascript')
let g:spacevim_custom_plugins = [
\ ['junegunn/fzf'],
\ ['junegunn/fzf.vim'],
\ ]
NvChad configuration example:
local plugins = {
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = { "lua", "javascript", "python" },
},
},
{ "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" } },
}
return plugins
SpaceVim uses Vim script for configuration, while NvChad leverages Lua for a more modern and potentially faster setup. NvChad's configuration is generally more concise and focuses on Neovim-specific features.
💤 A modern plugin manager for Neovim
Pros of lazy.nvim
- Highly modular and customizable plugin management system
- Faster startup times due to lazy-loading capabilities
- Extensive documentation and active community support
Cons of lazy.nvim
- Steeper learning curve for beginners compared to NvChad's pre-configured setup
- Requires more manual configuration to achieve a full-featured environment
Code Comparison
lazy.nvim configuration example:
require("lazy").setup({
"folke/which-key.nvim",
{ "folke/neoconf.nvim", cmd = "Neoconf" },
"folke/neodev.nvim",
})
NvChad configuration example:
local plugins = {
["nvim-treesitter/nvim-treesitter"] = {},
["williamboman/mason.nvim"] = {},
["neovim/nvim-lspconfig"] = {}
}
While both NvChad and lazy.nvim offer powerful Neovim configurations, they cater to different user preferences. NvChad provides a more opinionated, pre-configured setup that's easier for beginners to get started with, while lazy.nvim offers greater flexibility and control over plugin management and loading. The choice between the two depends on the user's experience level and desired level of customization.
A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config
Pros of packer.nvim
- Lightweight and focused solely on plugin management
- Offers fine-grained control over plugin loading and configuration
- Supports lazy-loading and conditional loading of plugins
Cons of packer.nvim
- Requires more manual setup and configuration compared to NvChad
- Steeper learning curve for beginners
- Lacks pre-configured settings and optimizations found in NvChad
Code Comparison
NvChad configuration example:
local plugins = {
["nvim-treesitter/nvim-treesitter"] = {},
["neovim/nvim-lspconfig"] = {},
["hrsh7th/nvim-cmp"] = {},
}
packer.nvim configuration example:
use {
'nvim-treesitter/nvim-treesitter',
'neovim/nvim-lspconfig',
'hrsh7th/nvim-cmp',
}
NvChad is a comprehensive Neovim configuration that provides a pre-configured setup with various plugins and optimizations. It offers a more user-friendly experience out of the box, especially for beginners. On the other hand, packer.nvim is a plugin manager that focuses solely on managing and loading plugins efficiently. It provides more flexibility and control over plugin configuration but requires more manual setup and knowledge from the user.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
NvChad
Showcase
What is it?
-
NvChad is a neovim config written in lua aiming to provide a base configuration with very beautiful UI and blazing fast startuptime (around 0.02 secs ~ 0.07 secs). We tweak UI plugins such as telescope, nvim-tree etc well to provide an aesthetic UI experience.
-
Lazy loading is done 93% of the time meaning that plugins will not be loaded by default, they will be loaded only when required also at specific commands, events etc. This lowers the startuptime and it was like 0.07~ secs tested on an old pentium machine 1.4ghz + 4gb ram & HDD.
-
NvChad is supposed to be used with its starter config, so nvchad main repo ( this repo ) can be imported as a plugin via lazy's import feature and then you can easily use this repo's modules like autocmds etc.
Theme Showcase
Images (Click to expand!)
(Note: these are just 4-5 themes, NvChad has around 56 themes)
UI related plugins used
Images (Click to expand!)
Nvim-tree.lua
Fast file tree:
Telescope-nvim
A fuzzy file finder, picker, sorter, previewer and much more:
Our own statusline written from scratch
Tabufline (our own pertab bufferline)
- Here's a video that showcases it.
NvCheatsheet ( our UI Plugin )
Modern Theme Picker
For detailed info list, check features page
Plugins list
- Many beautiful themes, theme toggler by our base46 plugin
- Lightweight & performant ui plugin with NvChad UI It provides statusline modules, tabufline ( tabs + buffer manager) , beautiful cheatsheets, NvChad updater, hide & unhide terminal buffers, theme switcher and much more!
- File navigation with nvim-tree.lua
- Beautiful and configurable icons with nvim-web-devicons
- Git diffs and more with gitsigns.nvim
- NeoVim Lsp configuration with nvim-lspconfig and mason.nvim
- Autocompletion with nvim-cmp
- File searching, previewing text files and more with telescope.nvim.
- Syntax highlighting with nvim-treesitter
- Autoclosing braces and html tags with nvim-autopairs
- Indentlines with indent-blankline.nvim
- Useful snippets with friendly snippets + LuaSnip.
- Popup mappings keysheet whichkey.nvim
History
-
I (@siduck i.e creator of NvChad) in my initial days of learning to program wanted a lightweight IDE for writing code, I had a very low end system which was like 1.4ghz pentium + 4gb ram & HDD. I was into web dev stuff so many suggested me to use vscode but that thing was very heavy on my system, It took more ram than my browser! ( minimal ungoogled chromium ) so I never tried it again, sublime text was nice but the fear of using proprietary software XD for a linux user bugged me a lot. Then I tried doom-emacs which looked pretty but it was slow and I was lost within its docs, I tried lunarvim but too lazy to read the docs. Doom-emacs and lunarvim inspired me to make a config which is the prettiest + very fast and simple.
-
I'm decent at ricing i.e customizing system and making it look pretty so I posted my neovim rice on neovim subreddit, my neovim-dotfiles github repo blew up and then I had to come up with a name, I was amazed by the chad meme lol so I put NvChad as the name, the chad word in here doesnt literally mean the chad guy but in the sense such as chad linux vs windows i.e meaning superior, best etc. NvChad was made for my personal use but it gained some popularity which inspired me to make a public config i.e config usable by many and less hassle to update as everyone's going to use the same base config (NvChad) with their custom modifications (which are gitignored so that wont mess up), without the custom config stuff users would have to keep a track of every commit and copy paste git diffs to manually update nvchad.
:gift_heart: Support
If you like NvChad and would like to support & appreciate it via donation then I'll gladly accept it.
Credits
- Elianiva helped me with NeoVim Lua related issues many times, helped me in my initial neovim journey!
- @lorvethe for making the beautiful NvChad logo.
Top Related Projects
Neovim config for the lazy
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins
A modular Vim/Neovim configuration
💤 A modern plugin manager for Neovim
A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot