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 Rex, a terminal with its own 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

Fourteen 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.
branches <leader>gb — a centered picker over the repo's branches, local above remote, that switches to one, moves to the worktree holding it, or creates one off HEAD.
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.
svelte-css Hover, gd, and grr for a Svelte project's own CSS classes, scoped the way Svelte scopes component styles, from an LSP server running inside Neovim.
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