Skip to content

About

Personal neovim configuration for lazy ninjas πŸ’€

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Repository files navigation

Logo with the Lettering Neovim and a lazy ninja on the left

MIT License Neovim 0.11 is required Neovim 0.12 is supported


πŸ’€ Want to be a lazy neo ninja? πŸ’€

My personal Neovim configuration.

✨ Get started

⚑ Requirements

Tool Version Usage Note
Neovim >= 0.11.0 Required Installation Guide
Git >= 2.19.0 Required Download
NerdFont - Suggested Download (i.e. JetBrainsMono Nerd Font)
C Compiler - Suggested See nvim-treesitter
ripgrep >= 14.1.0 Suggested Installation
fd >= 10.1.0 Suggested Installation
fzf >= 0.60.0 Suggested Installation

πŸ› οΈ 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/nvim

Install all dependencies:

nvim --headless -c 'Lazy install' -c 'qa'

Now you can use nvim and enjoy the configuration! πŸŽ‰

🍱 What's in the bento?

Built on LazyVim. Below is the stuff on top.

🎨 Look & feel

  • 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)

πŸ€– AI

  • Sidekick (LazyVim ai.sidekick extra): AI CLI integration (Claude, etc.), NES disabled

πŸ” Navigation

  • Snacks picker + explorer (auto-opens on nvim with 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>)

🧠 Language / LSP

  • Vue/TypeScript via the LazyVim lang.vue extra (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

✍️ Completion & formatting

  • blink.cmp
  • Conform with a from_node_modules resolver β€” prefers the project's local eslint_d / prisma / jsonsort over globals, falls back cleanly

πŸ”§ Git

  • AI commit messages via the Codex CLI: auto-filled on git commit when the message is empty, <leader>gm regenerates
  • Diffview, mini-diff, Octo (PR/issue review)

πŸ” Secrets

  • cloak.nvim β€” auto-masks values in .env* files

⌨️ Keymaps

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

🧰 Custom commands

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

🩺 Health check

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.

About

Personal neovim configuration for lazy ninjas πŸ’€

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages