| Tool | Version | Usage | Note |
|---|---|---|---|
| Neovim | >= 0.11.0 | Installation Guide | |
| Git | >= 2.19.0 | Download | |
| NerdFont | - | Download (i.e. JetBrainsMono Nerd Font) |
|
| C Compiler | - | See nvim-treesitter | |
| ripgrep | >= 14.1.0 | Installation | |
| fd | >= 10.1.0 | Installation | |
| fzf | >= 0.60.0 | Installation |
Make a backup of your current Neovim files:
# required
mv ~/.config/nvim{,.bak}
# optional but recommended
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}Clone this repository:
git clone https://github.com/kboshold/nvim.dotfiles ~/.config/nvimInstall all dependencies:
nvim --headless -c 'Lazy install' -c 'qa'Now you can use nvim and enjoy the configuration! π
Built on LazyVim. Below is the stuff on top.
- Catppuccin Mocha with a 9-color indent cycle (custom
Indent*/IndentScope*highlights) - Snacks dashboard with custom ASCII branding
- Lualine with a mode-colored
CursorLineNr(sampled from the current mode's lualine highlight) - Rainbow delimiters, render-markdown, thin colorcolumn rulers (
config/ruler.lua)
- Sidekick (LazyVim
ai.sidekickextra): AI CLI integration (Claude, etc.), NES disabled
- Snacks picker + explorer (auto-opens on
nvimwith no args or a directory; skipped for piped input) - Oil.nvim floating browser (
<leader>oo/<leader>od) - vim-tmux-navigator (
<C-h/j/k/l>)
- Vue/TypeScript via the LazyVim
lang.vueextra (vue_ls + vtsls with@vue/typescript-plugin) - Prisma, Nix (alejandra), Python, Ansible, Docker, Helm, JSON, Markdown, SQL, Tailwind, YAML (via LazyVim extras)
- lazydev for Lua + Neovim API awareness
- blink.cmp
- Conform with a
from_node_modulesresolver β prefers the project's localeslint_d/prisma/jsonsortover globals, falls back cleanly
- AI commit messages via the Codex CLI: auto-filled on
git commitwhen the message is empty,<leader>gmregenerates - Diffview, mini-diff, Octo (PR/issue review)
- cloak.nvim β auto-masks values in
.env*files
Tip
The full list is discoverable via which-key (just press <leader> and wait) or <leader>sk. The table below only lists the custom bindings on top of LazyVim defaults.
| Mapping | Mode | Description |
|---|---|---|
dih / cih / vih |
n | Delete / change / select the TS node at cursor |
gf |
n | Open file under cursor; supports :line and :line-line suffix |
<leader>e |
n | Toggle snacks explorer (reuses open pane) |
<leader>oo / <leader>od |
n | Oil browser / floating preview |
<leader>gdm / <leader>gds / <leader>gdu |
n | Diffview: branch vs origin/main / uncommitted / commits ahead of upstream |
<leader>um |
n | Toggle render-markdown |
<leader>gm |
n | In a commit buffer: regenerate the commit message (auto-generated on git commit via codex exec) (vim.g.ai_commit_model, default gpt-6-luna) |
<leader>aa / as |
n | Sidekick: toggle CLI / select CLI |
<leader>at / av |
n / x | Send current node / selection to Sidekick |
<leader>ap |
n / x | Sidekick prompt picker |
<leader>ac |
n | Toggle Sidekick Claude |
<C-.> |
any | Switch focus to Sidekick |
<C-h/j/k/l> / <C-\> |
n | Tmux-aware pane navigation |
| Command | Description |
|---|---|
:PathCopyName |
Copy filename to clipboard |
:PathCopyRelative |
Copy relative path |
:PathCopyRelativeFull |
Relative path + current (or visual) line range |
:PathCopyAbsolute |
Copy absolute path |
:PathCopyAbsoluteFull |
Absolute path + line range |
scripts/check.sh runs Neovim headless and reports startup time, LSP clients per sample file, notify errors and :checkhealth problems. It uses NVIM_APPNAME=nvim-opt by default (symlink ~/.config/nvim-opt to this repo); scripts/install.lua installs mason tools and parsers in that isolated instance.
scripts/smoke.lua is a lighter check (config loads, no errors) that CI runs on every push and PR together with stylua --check.
Markdown linting uses .markdownlint-cli2.yaml as base config (MD013, MD033, MD041 off) and skips Claude/Codex Ctrl+G prompt files. tailwindcss only starts in projects with a Tailwind/PostCSS config or a tailwindcss dependency.
Use :InspectTree (built in) to inspect the treesitter tree.