Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

492 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nvim config

Terminal-first Neovim setup for everyday editing, Ruby/Rails, Git, LSP, and fuzzy navigation. Managed with lazy.nvim.

Requirements

  • Neovim 0.11+ (0.12 recommended)
  • git, curl, make (for telescope-fzf-native)
  • tree-sitter CLI — required to compile Treesitter parsers (brew install tree-sitter-cli)
  • Optional but recommended:
    • ripgrep (rg) for project search
    • fd for fast file finding (,t / Telescope)
    • a Nerd Font in your terminal for icons
    • rspec / Bundler for the Ruby test runner

Install

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/install

If you already have this checkout elsewhere (for example a workspace clone):

/path/to/vim-config/bin/install

That script will:

  1. Symlink ~/.config/nvim to this checkout
  2. Remove leftover classic Vim ~/.vim / ~/.vimrc symlinks
  3. Sync plugins with lazy.nvim
  4. Run bin/check

Then open a new terminal and run:

nvim

Update

cd ~/.config/nvim
git pull
nvim --headless "+Lazy! sync" +qa
./bin/check

Layout

init.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

Keybindings

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

LSP (when a language server is attached)

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

Diagnostics

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.

Plugins (high level)

  • 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

Tests

:RunTests and :RunFocusedTest run rspec / cuke in the last Terminal.app window on macOS. They only activate for *_spec.rb and *.feature buffers.

Checks

./bin/check

GitHub Actions runs the same smoke checks on every push/PR.

Design notes

  • 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

About

Nvim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages