Personal Neovim configuration focused on a small, practical Lua setup for daily development. It uses lazy.nvim for plugin management, blink.cmp for completion, built-in Neovim LSP, Treesitter, Telescope, Git tooling, snippets, and a few workflow helpers.
- Neovim, preferably the latest stable release.
- Git,
curl,unzip,make, and a C/C++ build toolchain. - Node.js and npm for JavaScript/TypeScript-related language tooling.
- Rust/Cargo for
tree-sitter-cliandstyluainstallation. - Python/pip for Python tooling and the Neovim Python provider.
fdandripgrepfor fast file search and grep.- A Nerd Font. The install script installs Hack Nerd Font.
Clone this repository into your Neovim config directory:
git clone <repo-url> ~/.config/nvim
cd ~/.config/nvim
./install_nvim.shThe install script is Linux-oriented. It installs or checks for Neovim, Rust/Cargo, Tree-sitter CLI, Stylua, npm language tools, Python tools, fd, ripgrep, black, flake8, and Hack Nerd Font.
Plugins are bootstrapped automatically through lazy.nvim when Neovim starts.
init.lualoads the user config entrypoint.lua/user/config/contains core setup: lazy.nvim bootstrap, settings, mappings, globals, and autocmds.lua/user/plugins/contains plugin specs loaded by lazy.nvim.lua/user/lsp/contains the LSP setup and server-specific overrides.snippets/contains VS Code-style snippets loaded by LuaSnip.utilities/contains helper scripts used byinstall_nvim.sh.
- Lazy-loaded plugin setup with
lazy.nvim. - Completion through
blink.cmpwith LSP, path, snippets, and buffer sources. - VS Code-style snippets through
LuaSnipfrom the localsnippets/directory. - Built-in LSP setup with document highlights, diagnostics, completion capabilities, and format-on-save when supported by the server.
- Treesitter parsers for Rust, JavaScript, TypeScript, Lua, C, C++, CSS, SCSS, Bash, Python, HTML, Fish, JSON, Go, Make, Markdown, YAML, Vim, and Vimdoc.
- Telescope file, grep, buffer, and help search with
telescope-fzf-native. - Oil file explorer replacing netrw.
- Git signs, Fugitive commands, and inline git blame.
- Harpoon 2 quick file navigation.
- Auto pairs, auto tags, and commenting helpers.
- Onedark colorscheme plus ThemeSwitch integration.
Configured LSP servers:
lua_lscsslsemmet_lsjsonlsmarkdown_oxidepyrightbashlsrust_analyzertailwindcssts_lsgoplsastro
Custom server config files currently exist for lua_ls, cssls, jsonls, and rust_analyzer under lua/user/lsp/servers/.
- lazy.nvim - Plugin manager.
- blink.cmp - Completion engine.
- LuaSnip - Snippet engine.
- nvim-lspconfig - LSP server configuration.
- nvim-treesitter - Syntax parsing and Treesitter integration.
- telescope.nvim - Fuzzy finder.
- telescope-fzf-native.nvim - Native FZF sorter for Telescope.
- plenary.nvim - Lua utility dependency.
- oil.nvim - File explorer.
- harpoon - Fast project file navigation.
- gitsigns.nvim - Git signs and hunk UI.
- vim-fugitive - Git integration.
- git-blame.nvim - Inline blame messages.
- nvim-autopairs - Automatic pairs.
- nvim-ts-autotag - Auto close and rename HTML/JSX tags.
- mini.comment - Commenting.
- fidget.nvim - LSP progress UI.
- undotree - Undo history browser.
- nvim-web-devicons - File icons.
- onedark.nvim - Default colorscheme.
- ThemeSwitch.nvim - Theme switcher.
Most keymaps are defined in lua/user/config/mappings.lua and plugin-specific files.
jkin insert mode leaves insert mode.J/Kin visual mode move the selected lines down/up.n/Nkeep search results centered.<C-d>/<C-u>keep half-page scrolling centered.<leader>wwrites the current buffer.<leader>wewrites and sources the current file.<Tab>/<S-Tab>cycle buffers.<leader>bwipes the current buffer.<leader>ppastes over a visual selection without replacing the default register.</>in visual mode indent and keep the selection active.<leader>oformats the current buffer with LSP.<leader>lformats the visual selection with LSP.<leader>ttoggles Undotree.<M-j>/<M-k>move through the quickfix list.gd/gDjump to definition/declaration.<C-k>shows LSP signature help.[djumps to the next diagnostic with a float.gaopens LSP code actions.glopens diagnostics in a rounded float.
<leader>fopens Telescope file search.<leader>sgopens Telescope live grep.<leader>fbopens Telescope buffers.<leader>fhopens Telescope help tags.-opens Oil in the current directory.<leader>-toggles Oil float.<leader>aadds the current file to Harpoon.<C-e>toggles the Harpoon quick menu.<leader>1through<leader>4jump to Harpoon entries.<C-S-P>/<C-S-N>move to previous/next Harpoon entries.<leader>gsopens Fugitive Git status.<leader>gDopens Fugitive 3-way diff split.<leader>gcstarts a Git commit.<leader>gCstartsgit commit --amend.<leader>gpruns Git pull.<leader>gSstashes all changes.
- Lua formatting is configured with
stylua.toml. - LSP formatting runs automatically before save for servers that advertise formatting support.
- Manual formatting is available with
<leader>ofor the current buffer and<leader>lfor a visual range.