dotfiles
Terminal-centric setup for macOS: Ghostty + tmux + Neovim, tied together with
unified hjkl navigation and a Gruvbox theme.

Contents
| File |
Symlinked to |
What |
config.ghostty |
~/.config/ghostty/config |
Ghostty terminal (Gruvbox, Fira Code) |
tmux.conf |
~/.tmux.conf |
tmux: C-a prefix, vi copy-mode, seamless vim panes |
nvim-init.lua |
~/.config/nvim/init.lua |
Neovim: LSP, git, NERDTree, Goyo |
zshrc |
~/.zshrc |
zsh prompt with git branch, aliases |
pi-settings.json |
~/.pi/agent/settings.json |
pi agent config |
Install
git clone <repo> ~/Code/dotfiles
cd ~/Code/dotfiles
./install.sh
install.sh only creates symlinks, so edits in the repo take effect live.
Usage
Navigation (vim + tmux)
| Key |
Action |
C-h/j/k/l |
Move between vim splits and tmux panes (seamless) |
Cmd+hjkl |
Resize the focused split/pane (maps to Alt+hjkl) |
tmux (prefix C-a)
| Key |
Action |
C-a | |
Split horizontally |
C-a - |
Split vertically |
C-a [ |
Enter copy-mode |
v / C-v |
Begin selection / block selection (copy-mode) |
y or Enter |
Copy selection to macOS clipboard |
Escape |
Cancel copy-mode |
Neovim
| Key |
Action |
C-n |
Toggle NERDTree |
C-g |
Toggle Goyo (distraction-free) |
C-y |
Toggle Limelight |
C-g d |
:Git diff |
C-g s |
:Gdiffsplit |
C-g f |
Open Diffview |
C-g q |
Close Diffview |
C-g l |
:Git log |
zsh
| Alias |
Expands to |
vim |
nvim |
ls / ll / la |
ls -hG / -hlG / -ahlG |
Notes
C-h/j/k/l moves between vim splits and tmux panes interchangeably.
Cmd+hjkl (Ghostty) maps to Alt+hjkl for resizing splits/panes, keeping
Option free for | on the Norwegian layout.
- Neovim auto-reloads files changed on disk — handy when an agent edits them.
Dependencies
Ghostty, tmux (≥ 3.0), Neovim (≥ 0.12, for vim.pack), a Nerd Font / Fira Code.
Plugins are managed by the built-in vim.pack; LSP servers (ty, gopls)
must be installed separately.