Personal development environment managed with GNU Stow. Themed consistently with Catppuccin Mocha across all tools.
| Package | Tool | Description |
|---|---|---|
bat |
bat | Syntax-highlighted cat replacement |
claude |
Claude Code | AI coding assistant settings and statusline |
ghostty |
Ghostty | Terminal emulator |
git |
Git | Git config with delta pager and LFS |
lazygit |
lazygit | Git TUI client |
nvim |
Neovim | Editor powered by LazyVim |
starship |
Starship | Minimal cross-shell prompt |
tmux |
tmux | Terminal multiplexer |
yazi |
yazi | TUI file browser |
zellij |
Zellij | Terminal multiplexer (tmux alternative) |
zsh |
Zsh | Shell config with aliases and plugins |
git clone https://github.com/yepengfan/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Symlink all packages
stow */
# Or symlink individual packages
stow nvim
stow zshstow -D nvim # Remove a single package
stow -D */ # Remove all packages- Smart Splits — seamless
Ctrl+hjklnavigation between Neovim splits and multiplexer panes (Zellij, tmux) - Claude Code via Zellij — AI assistant runs in a persistent Zellij pane with Neovim keymaps to send context
- Modern CLI replacements —
eza(ls),bat(cat),delta(diff),zoxide(cd),fzf(fuzzy finder) - Lazy-loaded NVM — deferred Node version manager loading for faster shell startup
Image preview is disabled because Zellij does not fully support terminal graphics protocols (Kitty, Sixel). Yazi's OSC 10/11 color queries leak through Zellij as a visible Shell: dialog (zellij#3590). To avoid this, image previews are set to noop in yazi.toml. Re-enable when Zellij fixes graphics passthrough.
Claude Code runs in a Zellij pane to the right of Neovim. This setup allows persistent sessions that survive editor restarts, unlike the embedded terminal approach.
- Zellij running with at least two panes: Neovim (left) and Claude Code (right)
All keybindings use the <leader>a prefix ("ai" group):
| Keymap | Mode | Description |
|---|---|---|
<leader>af |
Normal | Focus the Claude Code pane |
<leader>ar |
Normal | Send file:line reference to Claude, return to Neovim |
<leader>ab |
Normal | Send the current file path to Claude, return to Neovim |
<leader>as |
Visual | Send file:start-end range reference to Claude, return to Neovim |
- Open Neovim and Claude Code side-by-side in Zellij
- Use
<leader>afto switch focus to Claude at any time - Use
Ctrl+hto return focus to Neovim (via vim-zellij-navigator) - To share code context, position your cursor or select code in Neovim:
<leader>ar— sends a reference likesrc/main.lua:42<leader>ab— sends the file path likesrc/main.lua<leader>as(visual mode) — sends afile:start-endrange reference (Claude reads the file itself)
- Text is typed into the Claude input without pressing Enter, so you can review or edit before submitting