Personal Neovim configuration based on kickstart.nvim .
The install script handles everything — Neovim (from GitHub releases, not
distro repos), build tools, ripgrep, fd, tree-sitter CLI, clipboard support,
and a Nerd Font.
Supported: Ubuntu/Debian , Fedora/RHEL , Arch , macOS (Homebrew).
# Run from anywhere — no clone needed yet
bash <( curl -fsSL https://raw.githubusercontent.com/etapsc/nvim-config/main/scripts/install-deps.sh)
Or, if you already cloned the repo:
./scripts/install-deps.sh
What gets installed
Category
Packages
Core
neovim (>= 0.11), git, make, unzip, gcc, curl
Search
ripgrep, fd
Treesitter
tree-sitter CLI (via cargo, brew, or npm)
Clipboard
xclip (Linux only)
Font
JetBrainsMono Nerd Font
LSP servers, formatters, and linters (clangd, gopls, pyright, black, prettier,
etc.) are auto-installed by Mason on first launch — no manual step needed.
Back up your existing config if needed, then:
git clone git@github.com:etapsc/nvim-config.git ~ /.config/nvim
Lazy will auto-install all plugins on first launch:
Run :checkhealth to verify everything is working. Set the JetBrainsMono Nerd Font in your terminal emulator if icons look wrong.
Plugin manager : lazy.nvim
Fuzzy finder : telescope.nvim with fzf-native
LSP : nvim-lspconfig + Mason (auto-installs servers and tools)
Autocompletion : blink.cmp + LuaSnip
Formatting : conform.nvim (format on save)
Treesitter : syntax highlighting, indentation
Which-key : shows pending keybinds
Mini.nvim : ai textobjects, surround, bufremove
Enabled Kickstart Modules (lua/kickstart/plugins/)
Plugin
Description
autopairs
Auto-close brackets and quotes
gitsigns
Git gutter signs + hunk actions (<leader>h)
indent_line
Indentation guides
lint
Linting via nvim-lint (ruff, eslint_d, markdownlint)
neo-tree
File explorer (\ to toggle)
debug
DAP debugger (Go via delve)
Custom Plugins (lua/custom/plugins/)
Plugin
Description
bufferline
Tab-style buffer bar (Tab/S-Tab to cycle)
lualine
Statusline
noice
Enhanced UI for cmdline, messages, notifications
theme
Catppuccin (mocha) + Tokyonight (<leader>ut to toggle)
diffview
Visual git diff viewer and file history
neogit
Interactive git status, commit, push/pull
spectre
Project-wide and single-file search & replace
LSP Servers (auto-installed via Mason)
clangd, gopls, pyright, rust_analyzer, ts_ls, lua_ls, marksman
Formatters & Linters (auto-installed via Mason)
black, isort, prettier, ruff, eslint_d, markdownlint, stylua
Leader key is Space. Run :WhichKey to see all available mappings interactively.
Key
Action
<leader>sf
Search files
<leader>sg
Search by grep (across project)
<leader>sw
Search current word under cursor
<leader>sh
Search help tags
<leader>sk
Search keymaps
<leader>sc
Search commands
<leader>sd
Search diagnostics
<leader>sr
Resume last search
<leader>s.
Search recent files
<leader>s/
Grep in open files only
<leader>sn
Search Neovim config files
<leader>/
Fuzzy search in current buffer
<leader><leader>
Find open buffers
Search and Replace (Spectre)
nvim-spectre provides an interactive search & replace panel. Live preview is also enabled for :s commands (inccommand = 'split').
Key / Command
Action
<leader>sP
Open Spectre — search & replace across project
<leader>sp
Open Spectre — search & replace in current file
<leader>sp (visual)
Search & replace visual selection
/pattern
Search forward
?pattern
Search backward
n / N
Next / previous match
* / #
Search word under cursor forward / backward
:%s/old/new/g
Replace all occurrences in file
:%s/old/new/gc
Replace all with confirmation
:s/old/new/g
Replace all on current line
:'<,'>s/old/new/g
Replace in visual selection
Key
Action
Tab
Next buffer
S-Tab
Previous buffer
<leader>x
Close buffer (keeps window layout)
<leader>X
Pick a buffer to close
<leader><Left>
Focus window left
<leader><Right>
Focus window right
<leader><Down>
Focus window below
<leader><Up>
Focus window above
:split
Horizontal split
:vsplit
Vertical split
<C-w>=
Equalize split sizes
<C-w>o
Close all other windows
<C-w>T
Move current window to new tab
Key
Action
\
Toggle Neo-tree sidebar
\ (inside tree)
Close Neo-tree
<CR>
Open file / expand directory
a
Create file (add / suffix for directory)
d
Delete file
r
Rename file
c
Copy file
m
Move file
H
Toggle hidden files
R
Refresh
Git — Neogit (interactive status)
Key
Action
<leader>gs
Open git status panel
<leader>gc
Git commit
<leader>gp
Git push
<leader>gl
Git pull
q
Close Neogit panel
Inside the Neogit status panel:
Key
Action
s
Stage file / hunk under cursor
u
Unstage file / hunk
x
Discard changes
c
Open commit popup
p
Open push popup
F
Open pull popup
b
Open branch popup
l
Open log popup
Tab
Toggle diff inline
<CR>
Open file
Git — Diffview (visual diffs)
Key
Action
<leader>gd
Open diff view (all changes vs index)
<leader>gh
File history (current file)
<leader>gH
File history (entire branch)
<leader>gq
Close diff view (restores previous layout)
q
Close diff view (from any diffview panel)
Git — Gitsigns (inline hunks)
Key
Action
]c / [c
Jump to next / previous hunk
<leader>hs
Stage hunk
<leader>hr
Reset hunk
<leader>hS
Stage entire buffer
<leader>hu
Undo stage hunk
<leader>hR
Reset entire buffer
<leader>hp
Preview hunk
<leader>hb
Blame current line
<leader>hd
Diff against index
<leader>hD
Diff against last commit
<leader>tb
Toggle inline blame
Key
Action
grn
Rename symbol
gra
Code action
grr
Find references
grd
Go to definition
gri
Go to implementation
grt
Go to type definition
grD
Go to declaration
gO
Document symbols
gW
Workspace symbols
<leader>th
Toggle inlay hints
<leader>f
Format buffer
<leader>q
Open diagnostics quickfix list
Key
Action
F5
Start / continue
F1
Step into
F2
Step over
F3
Step out
F7
Toggle DAP UI
<leader>b
Toggle breakpoint
<leader>B
Set conditional breakpoint
Key
Action
<leader>ut
Toggle color theme
<Esc>
Clear search highlights
<Esc><Esc>
Exit terminal mode
:Lazy
Plugin manager
:Mason
LSP/tool installer
:WhichKey
Show all keymaps
Add plugins to lua/custom/plugins/ — they are auto-loaded
Edit init.lua for core settings and keymaps
Run :Mason to manage LSP servers and tools
Run :Lazy to manage plugins