Shell, tmux, vim and terminal configs for Linux, macOS and WSL2. bash is the baseline; zsh, tmux and the vim IDE layer on top and fall back quietly when missing.
Review the script before running it.
curl, production cowboy mode
curl -fsSL https://raw.githubusercontent.com/rlongstaff/dotfiles/main/install.sh | shcurl, review code first
curl -fsSLO https://raw.githubusercontent.com/rlongstaff/dotfiles/main/install.sh
less install.sh && sh install.sh
git
git clone https://github.com/rlongstaff/dotfiles && dotfiles/install.sh
Dry run against a throwaway home
./install.sh /tmp/fakehome
- Files already in
$HOMEare backed up to~/.dotfiles.bak.<timestamp>before linking. - Put your name and email in
~/.gitconfig.local; the tracked.gitconfigincludes it. - Undo with
./uninstall.sh, then copy back the backup you want.
Bare minimum
- Same shell config, prompt and aliases on every box (bash or zsh).
- vim core settings: indent, mouse, statusline, clipboard yank.
- Symlink installer with backups, an audit (
scripts/check.sh) and an uninstaller. - One shared ssh-agent per host, and OS-aware comfort dirs (
~/prj,~/bin,~/tmp,~/docs).
With enhancements
- tmux autostart, including a nested, remote session per ssh login.
- vim IDE: file tree, LSP, completion, go-to, diagnostics and a debugger.
- Every key binding in
keys.yamland every color incolors.yaml, rendered to kitty, gnome-terminal, tmux, the shells and vim, with generated cheatsheets. - Unified copy and paste across system, tmux and vim.
| Software | Minimum | For |
|---|---|---|
| bash | 3.2 | required |
| vim | 8.x | required |
| git | any | required |
| curl, tar | any | curl install only |
| zsh | 5.x | optional |
| tmux | 3.2 | optional |
| vim | 9.0 | LSP |
vim with +python3 |
8.x | debugger |
| gopls, delve | any recent | Go LSP and debugger |
| yq (mikefarah) | v4 | re-rendering keys and colors |
| kitty, gnome-terminal, iTerm2 | any recent | terminal configs |
Packages, install commands and what happens without each item: guide, Requirements.
- Guide: requirements, keyboard standard, vim defaults, vim Go IDE.
- Keyboard cheatsheet: every binding, generated from
keys.yaml. - Color cheatsheet: every color, generated from
colors.yaml.
- Installing to
$HOMEsymlinks files into the checkout, so edits to~/.vimrcand friends edit the repo. The full list isLINKSinscripts/lib.sh. - Re-run one step with
scripts/install.d/<step>.sh. - Edit
keys.yamlorcolors.yaml, then runscripts/keyboard/render.shorscripts/colors/render.sh. Never hand-edit a file that starts with GENERATED.
- curl install: nothing tracks it, edit freely.
- git install:
git checkout -b my_config, commit your changes, then periodicallygit fetch && git merge main. - Or install to another directory and symlink only what you want.
~/prj holds projects and ~/src links to it, so repos live at ~/src/github.com/<user>/<repo>.
~/docs links to the OS's Documents folder.