Set up a macOS development environment with Neovim and tmux, matching Jonathan's config. Use when the user says "set up neovim", "set up tmux", "configure my terminal", "copy dev environment", or wants to replicate this Neovim + tmux workflow on a new machine.
Automated setup for a macOS dev environment with Neovim, tmux, vim-plug, TPM, and seamless vim/tmux navigation.
Copy this checklist and track progress:
- [ ] Step 1: Install core tools via Homebrew
- [ ] Step 2: Install config files
- [ ] Step 3: Install tmux scripts and plugins (TPM)
- [ ] Step 4: Install Neovim plugins (vim-plug)
- [ ] Step 5: Verify the setup
brew install neovim tmux the_silver_searcher reattach-to-user-namespace node fzf
| Tool | Purpose |
|---|---|
neovim | Editor (init.vim sources ~/.vimrc) |
tmux | Terminal multiplexer |
the_silver_searcher | ag — fast code search, used by fzf and vim grep |
reattach-to-user-namespace | macOS clipboard integration for tmux copy/paste |
node | Required by coc.nvim and markdown-preview.nvim |
fzf | Fuzzy finder (also installed as a vim plugin) |
Read and write each config file from this skill's configs/ directory:
~/.vimrc~/.config/nvim/init.vim (create dir with mkdir -p ~/.config/nvim)~/.tmux.conf~/.tmux/scripts/save-scrollback.sh~/.tmux/scripts/restore-scrollback.shmkdir -p ~/.tmux/scripts
chmod +x ~/.tmux/scripts/save-scrollback.sh ~/.tmux/scripts/restore-scrollback.sh
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Then install the tmux plugins:
tmuxCtrl-a then I (capital I) to install plugins (tmux-resurrect, tmux-continuum)vim-plug auto-installs on first launch (see the curl in .vimrc). Just run:
nvim +PlugInstall +qall
This installs all plugins defined in the plug#begin / plug#end block. Key plugins:
| Plugin | What it does |
|---|---|
fzf + fzf.vim | Fuzzy file finder (Ctrl-p) and history (Ctrl-b) |
vim-tmux-navigator | Seamless Ctrl-h/j/k/l between vim splits and tmux panes |
vim-tmux-runner | Send commands from vim to a tmux pane |
coc.nvim | Autocomplete engine (needs Node.js) |
vim-fugitive | Git wrapper (:Git blame, :Git diff, etc.) |
vim-surround | Change surrounding chars (cs"' to swap " → ') |
vim-commentary | Toggle comments with gcc |
vim-test + tslime | Run tests from vim, output in a tmux pane |
markdown-preview.nvim | Live markdown preview in browser |
vim-easy-align | Align text across lines |
jellybeans.vim | Color scheme |
# Neovim launches without errors
nvim --version
# Tmux launches with correct prefix (Ctrl-a)
tmux new -s test
# Press Ctrl-a then : — should open tmux command prompt
# ag works
ag --version
# Clipboard integration works
echo "test" | pbcopy && pbpaste
Ctrl-a)| Binding | Action |
|---|---|
Ctrl-a | | Split pane horizontally |
Ctrl-a - | Split pane vertically |
Ctrl-a h/j/k/l | Navigate panes (vim-style) |
Ctrl-a H/J/K/L | Resize panes |
Ctrl-a r | Reload tmux.conf |
Ctrl-a I | Install TPM plugins |
Ctrl-h/j/k/l | Navigate between vim splits AND tmux panes seamlessly |
Space)| Binding | Action |
|---|---|
Ctrl-p | Fuzzy find files |
Ctrl-b | Fuzzy find from file history |
Space s | Run nearest test |
Space t | Run current test file |
Space v | Re-run last test |
Space lp | Start markdown preview |
Space lc | Stop markdown preview |
gcc | Toggle comment on line |
jk | Exit insert mode (alternative to Esc) |
Space Space | Switch between last two files |
Space ff | Toggle fold |
K | Grep word under cursor |
\ | Start an Ag search |
jellybeans.vim. Change in .vimrc if preferred..vimrc via tabstop/shiftwidth)..tmux.conf.vim-test. Adjust test#ruby#rspec#executable for your project.