Who this is for: This Neovim configuration is designed for developers seeking a quick start with a modern, functional, and easily extensible environment. It's ideal for those looking for a clean, well-structured base that can cover 99% of daily tasks while avoiding unnecessary complexity.
Requirements:
- Neovim 0.11+
- git
- Recommended:
ripgrep(for fast searching),make(fortelescope-fzf-nativecompilation),glow(for Markdown preview). - Optional: Node.js, Python, Go, etc., for various language servers and tools.
Installation (Linux/macOS):
The easiest way is to use make:
make installOr, if you prefer to run the script directly:
bash scripts/install.shDeveloper Install (Symlink):
If you plan to actively modify the configuration, use the symlink option:
make install-symlinkThis links your repository directly to your Neovim config directory, allowing for immediate reflection of changes.
First Run:
After installation, simply launch Neovim:
nvimlazy.nvim will automatically bootstrap and install all plugins. mason-tool-installer will begin installing essential language servers and formatters.
Adding LSPs for Your Frameworks:
After the first run, you can easily add support for other languages and frameworks:
-
Open Neovim.
-
Run the command
:Masonto interactively manage tools. -
Find the desired language server (e.g.,
pyrightfor Python,tsserverfor TypeScript) and install it. -
Alternatively, for automatic installation, add the server name to the
servers_listinlua/plugins/lsp/config.lua:local servers_list = { "lua_ls", "bashls", "jsonls", "yamlls", "lemminx", "dockerls", "marksman", "pyright", -- Add here "ts_ls", -- And here -- etc. }
Then restart Neovim or run
:Lazy sync.
Update:
make updateUninstall:
make uninstallThis Neovim configuration aims to provide:
- A Minimal and Robust Base: Focused on the essentials for productive work.
- An Explicit and Consistent Structure: Each plugin resides in its own folder (
lua/plugins/<name>/), containinginit.lua(Lazy.nvim spec), optionallyconfig.lua(plugin configuration), and optionallykeys.lua(keymaps). - Easy Extensibility and Maintainability: Thanks to its modular structure, adding or removing functionality is intuitive.
Key Components:
- Plugin Manager: lazy.nvim (safe bootstrap).
- LSP: nvim-lspconfig + mason.nvim (+ SchemaStore.nvim) + neodev.nvim for Lua.
- Completion: nvim-cmp (with luasnip and lspkind).
- Formatting: conform.nvim (format on save with LSP fallback).
- Treesitter: nvim-treesitter for syntax highlighting and indentation.
- User Interface: lualine.nvim, bufferline.nvim, which-key.nvim, gitsigns.nvim.
- Tools: telescope.nvim (+fzf), nvim-tree.lua, toggleterm.nvim, trouble.nvim, Comment.nvim, glow.nvim.
For more detailed information on various aspects of the configuration, please refer to the files in the docs/ directory:
- Installation and Update
- Repository Structure
- Extend and Customize (how to add/remove plugins, LSPs, formatters, keymaps)
- LSP Configuration (LSP behavior, keymaps, diagnostics)
- Git Usage (Fugitive and Gitsigns)
- Keymaps Overview
- Troubleshooting (common issues and their solutions)