Personal Neovim configuration with an IDE-like setup. Features LSP-powered code intelligence (go-to-definition, references, rename), multi-repo git integration, and fuzzy file search.
brew install neovim fd ripgrep lazygit
brew install --cask font-hack-nerd-font
Set your terminal font to Hack Nerd Font or Hack Nerd Font Mono .
git clone git@github.com:iraycd/nvim-config.git ~ /.config/nvim
Open nvim and plugins will auto-install on first launch.
Auto-installed via Mason on first launch:
Language
Server
TypeScript/JavaScript
ts_ls
Python
pyright
Go
gopls
Zig
zls
Dockerfile
dockerls
Docker Compose
docker_compose_language_service
YAML
yamlls
Requires separate SDK installation:
Leader key is Space.
Shortcut
Action
Space + e
Toggle file tree
Inside the file tree:
Shortcut
Action
j / k
Move up/down
Enter / o
Open file / expand folder
Tab
Preview file
a
Create file/directory (end with / for dir)
d
Delete
r
Rename
x
Cut
c
Copy
p
Paste
l
Drill into folder (set as root)
h
Go back up to parent root
Backspace
Go to parent directory
-
Navigate up one directory
gl
Open lazygit for the repo under cursor
g?
Show all keybinds
Shortcut
Action
Space + p
Find files (fuzzy, any order like Ctrl+P)
Space + f
Search text in files (supports ripgrep flags)
Space + b
Switch between open buffers
Inside live grep (Space + f):
Shortcut
Action
Ctrl + k
Quote the current prompt (needed before adding flags)
Ctrl + i
Quote prompt and add --iglob for file/path filtering
Examples: "myFunction" -g "*.ts", "myFunction" -g "src/utils/*", "myFunction" -t go
Shortcut
Action
Tab
Next tab
Shift + Tab
Previous tab
Space + x
Close current tab
Shortcut
Action
Ctrl+w h
Jump to left window (tree)
Ctrl+w l
Jump to right window (editor)
Ctrl+w w
Cycle between windows
Shortcut
Action
Space + g g
Open lazygit (auto-detects repo, or lets you pick)
gl (in file tree)
Open lazygit for the repo under cursor
Press q to close lazygit. The buffer auto-closes.
Git - Gitsigns (inline changes)
Shortcut
Action
]c
Next changed hunk
[c
Previous changed hunk
Space + g p
Preview hunk inline
Space + g a
Stage hunk
Space + g u
Unstage hunk
Space + g r
Reset hunk
Space + g A
Stage entire file
Space + g R
Reset entire file
Space + g b
Blame current line
Space + g B
Blame line (full commit message)
Space + g d
Diff against index
Shortcut
Action
Space + g h
Current file commit history
Space + g H
Full repo commit history
Space + g o
View all uncommitted changes side-by-side
Space + g c
Close diff view
Shortcut
Action
Space + g m
Manually refresh repo status labels
Repo status labels auto-refresh every 5 seconds and on file save.
Shortcut
Action
gd
Go to definition (opens in new tab)
gD
Go to definition (same buffer)
gr
Find all references
gi
Go to implementation
K
Hover docs (show type/docs popup)
Space + rn
Rename symbol across files
Space + ca
Code action (quick fix, refactor)
Space + D
Go to type definition
[d
Previous diagnostic (error/warning)
]d
Next diagnostic (error/warning)
Space + dd
Show diagnostic details in float
Shortcut
Action
s
Flash jump — type 1-2 chars, then pick a label to jump
S
Flash treesitter — select treesitter nodes (functions, blocks)
Works in normal, visual, and operator-pending modes (e.g., ds to delete-to-flash, ys to yank-to-flash). Also enhances / and ? search with jump labels.
System clipboard is synced — y copies to clipboard, p pastes from clipboard. No need for "+y.
Shortcut
Action
gg
Go to top of file
G
Go to bottom of file
Ctrl + f
Page down
Ctrl + b
Page up
Ctrl + d
Half page down
Ctrl + u
Half page up
0
Beginning of line
$
End of line
w
Next word
b
Previous word
{
Previous blank line
}
Next blank line
:42
Go to line 42