Personal Neovim (LazyVim), tmux, and Starship config.
- Neovim ≥ 0.9 (LazyVim requirement)
- tmux
- Starship
- git, curl, a C compiler (for Treesitter), and ripgrep + fd (LazyVim defaults expect them)
- A Nerd Font set as your terminal font (LazyVim and Starship use font icons)
- Optional:
himalayaCLI — needed for the email plugin to actually do anything
On macOS:
brew install neovim tmux starship ripgrep fd-
Clone this repo (path doesn't matter, examples assume
~/writing/dotfiles):git clone <this-repo> ~/writing/dotfiles
-
Run the setup script:
cd ~/writing/dotfiles ./setup.sh
It symlinks
nvim/→~/.config/nvim,tmux/.tmux.conf→~/.tmux.conf, andstarship/starship.toml→~/.config/starship.toml, then checks the required tools above and prints thebrew installline for anything missing. It's idempotent (safe to re-run) and refuses to clobber a pre-existing non-emptyinit.lua,init.vim,.tmux.conf, orstarship.toml— back the file up and re-run if it warns. -
Hook Starship into your shell. The setup script tells you exactly what to paste; for reference:
# zsh — append to ~/.zshrc eval "$(starship init zsh)" # bash — append to ~/.bashrc (or ~/.bash_profile on macOS login shells) eval "$(starship init bash)"
Open a new shell to pick it up.
-
Launch
nvim. On first run,nvim/lua/config/lazy.luabootstrapslazy.nvimitself (clones it into Neovim's data dir), then installs every plugin undernvim/lua/plugins/. Thefzfplugin'sbuildstep compiles the fzf binary automatically. -
Start tmux with
tmux. Reload after editing.tmux.confwithprefix r(C-b rby default — the prefix is not remapped).
nvim/— Neovim config layered on LazyVim. Custom plugins live innvim/lua/plugins/:tmux.lua—vim-tmux-navigatorfor Ctrl-h/j/k/l pane navigation (paired withtmux/.tmux.conf).himalaya.lua—himalaya-vimemail client.fzf.lua—junegunn/fzf+fzf.vim.
tmux/.tmux.conf— terminal defaults, mouse on, and the tmux side of seamless Vim/tmux Ctrl-h/j/k/l navigation.starship/starship.toml— Starship prompt config. Reloads automatically on the next prompt render — no command needed.
Inside Neovim: :Lazy sync (LazyVim also has checker.enabled = true, which notifies of updates automatically).
There is no vim-plug in this setup — lazy.nvim is the only plugin manager. If you see references to Plug anywhere, it's stale.
See CLAUDE.md for architecture notes when editing.