This is my personal Neovim setup, managed with lazy.nvim.
- Leader key:
<Space> - Plugin specs:
lua/plugins/*.lua - Plugin entrypoint:
lua/plugins.lua
- Neovim (recent version recommended)
- git
- Optional but recommended:
- lazygit (for the LazyGit UI)
- gh (GitHub CLI, used by LazyGit custom commands)
- fzf + ripgrep (best experience for
fzf-lua) - delta (optional; nicer git diff pager in LazyGit. If not installed we fall back to
less -R.) - a Nerd Font (icons in neo-tree, lualine, devicons)
If you want icons in the UI (neo-tree/lualine/devicons), install a Nerd Font and set your terminal to use it.
Install on Windows and set your terminal font:
- Download a Nerd Font (e.g. JetBrainsMono Nerd Font) from
https://www.nerdfonts.com/font-downloads - Unzip and install the
.ttffiles (right click → Install) - In your terminal app (e.g. Windows Terminal): set Font face to that Nerd Font
- Restart the terminal and Neovim
Install into ~/.local/share/fonts:
sudo apt update
sudo apt install -y fontconfig unzip
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLo JetBrainsMono.zip https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip -o JetBrainsMono.zip
fc-cache -fvIn ~/.config/lazygit/config.yml set:
gui:
nerdFontsVersion: "3"Back up your current config and clone this repo into ~/.config/nvim:
mv ~/.config/nvim ~/.config/nvim.bak
git clone <your-repo-url> ~/.config/nvimStart Neovim. On first launch, lazy.nvim will bootstrap itself and install plugins:
nvimUseful commands:
:Lazy— open plugin manager UI:Lazy sync— install/update plugins
- Leader:
<Space>(set inlua/vim-options.lua) - Open file explorer:
<C-n> - Toggle floating terminal:
<C-\\>
<leader>ff— find files<leader>fg— live grep<leader>fb— buffers<leader>fh— help tags<leader>fc— commands<leader>fk— keymaps<leader>ft— fzf-lua builtin picker
You have two ways to open LazyGit:
<leader>lg— LazyGit (viakdheepak/lazygit.nvim)<leader>gg— LazyGit floating terminal (viatoggleterm.nvim)
Inside LazyGit, a few extra custom commands are configured:
<C-p>—git push origin <current-branch><C-o>—git pull origin <current-branch><C-b>— open selected file on GitHub (gh browse ...)<C-r>— create PR (gh pr create --fill)
Plugin list is defined in lua/plugins.lua and locked in lazy-lock.json.
-
folke/lazy.nvim: plugin manager- Use:
:Lazy
- Use:
-
catppuccin/nvim: colorscheme- Use: loaded on startup (
vim.cmd.colorscheme("catppuccin"))
- Use: loaded on startup (
-
nvim-tree/nvim-web-devicons: filetype icons- Use: used by UI plugins (neo-tree, lualine, etc.)
-
saghen/blink.cmp: completion engine- Use: starts automatically; completion popup while typing
- Notes: snippets powered by
LuaSnip
-
L3MON4D3/LuaSnip: snippet engine (dependency of blink) -
numToStr/Comment.nvim: comment toggling- Use:
gcmotions (default mappings from plugin)
- Use:
-
windwp/nvim-autopairs: auto-close brackets/quotes- Use: enabled automatically in insert mode
-
kylechui/nvim-surround: surround text objects- Use:
ys,ds,cs(default mappings from plugin)
- Use:
-
folke/snacks.nvim: dashboard + notifications + utilities- Use:
<leader>un— dismiss notifications<leader>bd— delete buffer<leader>cR— rename current file<leader>gB— git browse<leader>gL— git blame line<leader>ss— scratch buffer
- Use:
-
nvim-lualine/lualine.nvim: statusline- Use: auto; configured in
lua/plugins/lualine.lua
- Use: auto; configured in
-
nvim-neo-tree/neo-tree.nvim: file explorer- Use:
<C-n>opens filesystem tree
- Use:
-
akinsho/toggleterm.nvim: floating terminal- Use:
<C-\\>toggle terminal<leader>ggtoggle LazyGit terminal
- Use:
-
kdheepak/lazygit.nvim: LazyGit inside a floating window- Use:
<leader>lgopen LazyGit<leader>lcopen/edit LazyGit config<leader>lfLazyGit for current file<leader>lsfile history for current file<leader>gdLazyGit current file<leader>gbLazyGit blame for current file
- Use:
-
lewis6991/gitsigns.nvim: git signs in the gutter- Use: loads on buffer read; shows +/- markers automatically
-
mason-org/mason.nvim: install LSP/DAP/formatters- Use:
:Mason
- Use:
-
mason-org/mason-lspconfig.nvim+neovim/nvim-lspconfig- Use: LSP integration base (this config currently sets up Mason + lspconfig deps)
nvim-treesitter/nvim-treesitter: syntax highlighting/indent via Tree-sitter- Use: installs parsers listed in
lua/plugins/treesitter.lua
- Use: installs parsers listed in
~/.config/nvim/
init.lua
lua/
vim-options.lua
plugins.lua
plugins/
*.lua
lazy-lock.json
init.luabootstrapslazy.nvim, sets runtimepath, then:- loads
lua/vim-options.lua - loads plugin specs via
require("lazy").setup("plugins")which importslua/plugins.lua
- loads
- Create a new file in
lua/plugins/<name>.luareturning a lazy.nvim plugin spec. - Add
require("plugins.<name>")tolua/plugins.lua. - Run
:Lazy sync.