Terminal-first Neovim setup for everyday editing, Ruby/Rails, Git, LSP, and fuzzy navigation. Managed with lazy.nvim.
- Neovim 0.11+ (0.12 recommended)
git,curl,make(for telescope-fzf-native)tree-sitterCLI — required to compile Treesitter parsers (brew install tree-sitter-cli)- Optional but recommended:
This repo is meant to live at ~/.config/nvim.
# Fresh machine
git clone https://github.com/nikkypx/vim-config.git ~/.config/nvim
~/.config/nvim/bin/installIf you already have this checkout elsewhere (for example a workspace clone):
/path/to/vim-config/bin/installThat script will:
- Symlink
~/.config/nvimto this checkout - Remove leftover classic Vim
~/.vim/~/.vimrcsymlinks - Sync plugins with lazy.nvim
- Run
bin/check
Then open a new terminal and run:
nvimcd ~/.config/nvim
git pull
nvim --headless "+Lazy! sync" +qa
./bin/checkinit.lua # Entrypoint
lua/
config/
options.lua # Core options
keymaps.lua # Global keybindings
autocmds.lua # Autosave, whitespace, filetype hints
diagnostics.lua # Quiet-by-default diagnostics + toggle
tests.lua # macOS Terminal.app test runner
lazy.lua # lazy.nvim bootstrap
plugins/
ui.lua # Colorscheme, statusline
telescope.lua # Fuzzy finder
explorer.lua # Neo-tree
treesitter.lua # Syntax / indent
lsp.lua # LSP + Mason
completion.lua # nvim-cmp
git.lua # Gitsigns + Fugitive
editing.lua # Comment, surround, which-key, …
ruby.lua # Rails / endwise / rake
bin/
install # Bootstrap
check # Headless regression checks
Leader is ,.
| Keys | Action |
|---|---|
jk |
Escape from insert mode |
,t / ,n / ,F |
Find files (Telescope) |
,bb |
Buffers |
Ctrl-p |
Recent files |
,a |
Grep word under cursor |
,A |
Live project grep |
\ |
Toggle Neo-tree |
| |
Reveal current file in Neo-tree |
,/ |
Toggle comment |
,g |
Git blame |
,gs |
Git status |
,u |
Show undo list |
,v |
Vertical split |
Ctrl-h/j/k/l |
Move between splits |
,Tab / ,S-Tab |
Next / previous tab |
,tn / Ctrl-t |
New tab |
Space |
Clear search highlight |
,= / F7 |
Reindent whole file |
F12 / F10 |
Write + run file tests |
F11 / F9 |
Write + run focused test |
,rv |
Reload config |
,rc |
Edit config |
,C |
Copy path:line to clipboard |
| Keys | Action |
|---|---|
gd |
Go to definition |
gr |
References |
K |
Hover |
,rn |
Rename |
,ca |
Code action |
,f |
Format buffer |
[d / ]d |
Prev / next diagnostic |
,e |
Line diagnostics (float) |
,d |
Toggle inline diagnostics |
,dq |
Send diagnostics to quickfix |
Inline diagnostics are hidden by default so in-progress code stays readable. Language servers still run and report normally — only the display is muted.
| Command | Action |
|---|---|
:DiagnosticsToggle |
Toggle inline display (also ,d) |
:DiagnosticsOn / :DiagnosticsOff |
Force on / off |
:DiagnosticsList |
Load diagnostics into quickfix |
,e opens a float for the current line at any time, even while inline display is off.
- UI: tokyonight, lualine, indent-blankline
- Navigation: Telescope, Neo-tree
- Language: Treesitter, Mason, nvim-lspconfig, nvim-cmp
- Git: gitsigns, fugitive
- Editing: Comment.nvim, nvim-surround, autopairs, which-key
- Ruby: vim-rails, vim-endwise, vim-rake
:RunTests and :RunFocusedTest run rspec / cuke in the last Terminal.app window on macOS. They only activate for *_spec.rb and *.feature buffers.
./bin/checkGitHub Actions runs the same smoke checks on every push/PR.
- Optimized for terminal Neovim, not MacVim / GUI workflows
- Familiar leader and navigation from the previous Vim config are preserved
- Fuzzy find / search / comments / file tree map to Telescope, ripgrep, Comment.nvim, and Neo-tree
- Language servers install on demand through Mason; open a Ruby/TS/Lua file and let them bootstrap