A performance-optimized Neovim configuration for TypeScript/JavaScript, Java, Go, Lua, Rust, Python, Swift, and Kotlin development. Uses lazy.nvim for plugin management with lazy-loading for fast startup.
Leader key: \ (backslash)
Plugin
Purpose
lazy.nvim
Plugin manager with lazy-loading
snacks.nvim
Multi-module utility (dashboard, notifications, bigfile, indent guides, etc.)
dracula
Color scheme
LSP Servers (auto-installed via Mason)
vtsls - TypeScript/JavaScript
jdtls - Java
yamlls - YAML
lua_ls - Lua
eslint - ESLint (auto-detects config presence)
Key
Action
\sf
Find files
\ss
Live grep (search text)
\sb
Search open buffers
\sg
Git status
\sw
Grep word under cursor
\sh
Help tags
\sd
Document diagnostics
\sD
Workspace diagnostics
\sr
Resume last search
\sc
Git commits
Inside fzf-lua picker:
Ctrl-d / Ctrl-u - Scroll preview
Ctrl-q - Select all and send to quickfix
Key
Action
gd
Go to definition
K
Hover documentation
\rn
Rename symbol
\h
Peek definition
\gt
Peek type definition
\gr
Find references (Lspsaga finder)
\ca
Code action
\ge
Buffer diagnostics
\gE
Workspace diagnostics
[d
Previous diagnostic
]d
Next diagnostic
Autocompletion (blink.cmp)
Key
Action
Tab / Ctrl-n
Next completion item
Shift-Tab / Ctrl-p
Previous completion item
Enter
Accept completion
Ctrl-Space
Toggle completion / documentation
Ctrl-e
Dismiss completion
Ctrl-d
Scroll docs down
Ctrl-f
Scroll docs up
Key
Action
\wh
Toggle NvimTree
\ff
Find current file in NvimTree
-
Open parent directory (Oil)
Key
Action
\ww
Close current buffer (preserves layout)
Ctrl-n
Next buffer
Ctrl-p
Previous buffer
Key
Action
s
Flash jump (type chars to jump to)
S
Flash treesitter (select treesitter node)
r
Remote flash (operator-pending mode)
Key
Action
\S
Open search and replace (grug-far)
\S (visual)
Search selected text
Key
Action
\fmt
Format current file
:Format
Format with LSP
Key
Action
\bb
Git blame current line
\gB
Open file/repo in browser
Copilot (disabled, re-enable in lua/plugins/copilot-lua.lua)
Key
Action
Ctrl-J
Accept Copilot suggestion
Alt-]
Next suggestion
Alt-[
Previous suggestion
Ctrl-]
Dismiss suggestion
Snacks.nvim Extras
Key
Action
]]
Jump to next LSP reference
[[
Jump to previous LSP reference
\nn
Show notification history
Key
Action
\p
Smart paste (disables syntax temporarily)
< / > (visual)
Indent and reselect
Ctrl-h/j/k/l
Arrow keys in insert/command mode
gc / gcc
Comment (built-in Neovim 0.10+)
ys/ds/cs
Surround add/delete/change
Key
Action
n
New file
f
Find file
g
Live grep
r
Recent files
c
Edit config
L
Open Lazy plugin manager
q
Quit
Command
Action
:Format
Format file with LSP
:ReloadConfig
Reload Neovim configuration
:Lazy
Open plugin manager
:Mason
Open LSP/tool installer
:TSInstall <lang>
Install treesitter parser (e.g., :TSInstall go python)
:TSUpdate
Update all treesitter parsers
:GrugFar
Open search and replace
:Oil
Open filesystem editor
:Copilot
Copilot status/commands (disabled)
Lazy-loading : Plugins load on demand via events (BufReadPost, InsertEnter, VeryLazy)
Large file handling : snacks.bigfile disables heavy features for files >256KB
LSP debouncing : 150ms debounce on background LSP requests (definitions/references are instant)
Treesitter guards : Skips highlighting for files >100KB or >5000 lines
Disabled built-in plugins : 25+ unused Vim plugins disabled at startup
Optimized search : Uses ripgrep (rg) for grep, fd for file finding
UI minimalism : No cursor line, no ruler, no showcmd for faster rendering
~/.config/nvim/
init.lua -- Entry point: lazy.nvim bootstrap, plugin loading
lua/
settings.lua -- All vim options (single source of truth)
keymappings.lua -- Global key mappings
performance.lua -- Runtime performance optimizations
startup-profile.lua -- Startup timing
plugins/
blink-cmp.lua -- Autocompletion
bufferline.lua -- Buffer tabs
conform.lua -- Code formatting
copilot-lua.lua -- GitHub Copilot (disabled)
dracula.lua -- Color scheme
flash.lua -- Quick jump motions
fzf-lua.lua -- Fuzzy finder
gitsigns.lua -- Git integration
grug-far.lua -- Search and replace
lspsaga.lua -- LSP UI
lualine.lua -- Status line
mason.lua -- LSP installer
mason-lspconfig.lua -- Mason + LSP bridge
nvim-autopairs.lua -- Auto bracket pairs
nvim-lspconfig.lua -- LSP configuration
nvim-surround.lua -- Surround text objects
nvim-tree.lua -- File explorer
nvim-treesitter.lua -- Syntax highlighting
oil.lua -- Filesystem editing
schemastore.lua -- JSON/YAML schemas
snacks.lua -- Multi-module utility
Installed parsers: typescript, javascript, tsx, json, yaml, lua, vim, vimdoc, markdown, swift, kotlin, ecma, jsx
nvim-treesitter v1.0 requires the tree-sitter CLI to compile parsers. If :TSInstall hangs, compile manually:
# 1. Download grammar source
cd /tmp && curl -sL " http://github.com/<repo>/archive/<revision>.tar.gz" | tar xz
# 2. Compile (add --generate flag if no src/parser.c exists)
cd < extracted-dir> /< location> && tree-sitter build -o parser.so
# 3. Install
cp parser.so ~ /.local/share/nvim/site/parser/< lang> .so
echo " <revision>" > ~ /.local/share/nvim/site/parser-info/< lang> .revision
To find repo/revision for a language: :lua print(vim.inspect(require("nvim-treesitter.parsers").<lang>))
Neovim >= 0.10
ripgrep (rg) - for grep operations
fd - for file finding
fzf - for fuzzy finding
tree-sitter CLI (brew install tree-sitter-cli) - for compiling parsers
A Nerd Font - for icons
Node.js - for LSP servers