Skip to content
dots
Esc
↑↓navigate↵open⌘Jpreview
On this page

Neovim

Neovim config pulled from its own repository as a chezmoi external, plus the editor hooks the dotfiles wire into it.

Neovim is the default editor everywhere in this setup. Its configuration (AstroNvim-based, per the repo README) lives in a separate repository, prdlk/nvim. This repo only clones it and wires other tools to it; the Lua config itself is not documented here.

Source .chezmoiexternal.toml entry .config/nvim
Target ~/.config/nvim (a git checkout)
Remote https://github.com/prdlk/nvim.git
Packages Arch: neovim (pacman). macOS: neovim (Homebrew)

How the external works

[".config/nvim"]
    type = "git-repo"
    url = "https://github.com/prdlk/nvim.git"
    [".config/nvim".pull]
        args = ["--ff-only"]
  • type = "git-repo": chezmoi runs git clone when ~/.config/nvim does not exist, so a fresh machine gets the config on first apply.
  • No refreshPeriod is set, so a normal chezmoi apply never pulls. The local checkout always wins; commit and push nvim changes from ~/.config/nvim directly.
  • A forced refresh (chezmoi apply --refresh-externals) runs git pull --ff-only, which refuses to merge if local history has diverged.

See externals and ignore rules for how chezmoi handles externals in general.

Ignored runtime paths

.chezmoiignore.tmpl keeps chezmoi away from state that tools write inside the checkout:

Path Why
.config/nvim/lazy-lock.json lazy.nvim lockfile, rewritten on plugin updates
.config/nvim/.git, .config/nvim/.git/** the checkout’s own git metadata
.config/nvim/.omc/** agent tooling state
.config/nvim/.crush/** agent tooling state
.config/nvim/.understand-anything/** agent tooling state

Integrations in this repo

Where What
dot_config/fish/conf.d/10-env.fish EDITOR=nvim. gh falls back to it because its editor key is empty.
Aliases e = nvim; e.v opens ~/.config/nvim/lua in yazi; e.t opens the tmux config in nvim.
Kitty Ctrl+Shift+e opens nvim in the current directory in a 50/50 vertical split. Kitty’s listen_on socket lets nvim hand Ctrl+h/j/k/l at a window edge back to kitty.
Yazi The edit opener and Ctrl+v / Ctrl+x call ~/.local/bin/yazi-nvim-open. Inside an nvim terminal ($NVIM set) files open in the host instance through the nvim-side EditFromYazi Lua function; otherwise a blocking nvim starts.
Git git difftool runs nvim "$LOCAL" "$REMOTE" +"CodeDiff file $LOCAL $REMOTE".
LeetCode The default workspace sets "editor": "nvim".

Was this page helpful?