Skip to content
macintacosPublic

About

Personal Neovim config.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

nvim

Neovim browsing this repo

My Neovim 0.12 config. My dotfiles pull it in as a chezmoi external, so it keeps its own history. It runs in Ghostty, inside the herdr agent multiplexer.

Nothing here is built for anyone else to install. There's no bootstrap, and parts of it assume my machine: a fish wrapper around nvim, and the palette and color scheme my dotfiles deploy. Take whatever looks useful.

How it's put together

  • No third-party plugin manager. Neovim's built-in vim.pack installs each plugin from its own file under plugin/ and pins it in nvim-pack-lock.json. A plugin loads at startup, right after startup, or on its first command or keymap.
  • mini.nvim does most of the work. It owns the picker, file explorer, sessions, statusline, and notifications. snacks.nvim covers the rest, such as indent guides, the terminal, and lazygit.
  • The colors follow the terminal. The color scheme switches between dark and light when the terminal does, even in a running editor.
  • It's tested and linted. A plenary spec suite, selene, stylua, and emmylua_check run on hk git hooks. mise pins every tool, and mise tasks lists the tasks.

Local plugins

Twelve plugins I wrote because nothing upstream did the job. Each directory has its own README.

Plugin What it does
blink-omni Bridges a buffer's omnifunc into the blink.cmp menu — how Ghostty's config options reach completion.
blink-pairs blink.pairs rules for Markdown emphasis that stay out of inline code spans, the parity check that decides when a symmetric delimiter opens a new pair, and a highlight on Markdown delimiters left without a partner.
ftchooser <leader>fl picks a buffer's filetype from human names; the choice is remembered per file across restarts.
gotoline :GoToLine — one floating prompt that fuzzy-finds a project file, previews it, then jumps to a line in it.
mini-pickers Replacement mini.pick registry entries: document symbols as a real tree, thinned workspace symbols, per-line blame, and an rg invocation whose flags are ours.
pack-pr :PackPR (<leader>Pp) — pick an open PR of one of your github.com/<owner>/ plugins, install its branch headlessly, and restart into it; a reset entry per plugin goes back to the default branch.
pack-tweaks <CR> on a line in the vim.pack update buffer opens that commit or tag in the browser.
pack-updates A statusline count of plugins with upstream commits you haven't pulled, checked in the background with git ls-remote and cached for a day; <leader>Pc re-checks.
projects <leader>pp — a zoxide picker that relaunches Neovim in the directory you choose, session and all.
scratch <leader>wt — per-project scratch files under .tmp/scratch/, picked or named on open.
uv-scripts Filetype detection and a ty client pointed at the environment uv builds for a PEP 723 single-file script.
worktrunk <leader>gw — worktrunk from a float: my shell's worktree picker, quick switches, remove and merge, relaunching Neovim in whichever worktree they land in; plus this file's copy from another worktree, split or diffed; and a worktree removed from under Neovim moves it into the primary one.

About

Personal Neovim config.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages