Vim, tmux and i3 all have similar concepts. You can have multiple things on screen, each can be maximized, and you can also have collections of those things offscreen. This is an over simplification. We're not going to get into things like vim buffers, tmux sessions, and i3 containers. Let's keep it simple.
Nomenclature |
Tool | Things on screen | Off screen |
vim | windows | tabs |
tmux | panes | windows |
i3 | windows | workspaces |
If I'm in i3, I'm usually local to the machine and don't start tmux sessions. So for me it's either ssh+tmux+vim+entr, or i3+vim+entr.
These are the everyday things I have to do in each:
New Vim Window / tmux Pane / i3 Window |
Context | Key | Action |
vim | C-w,n | New empty window |
vim | C-w,s | Duplicate window below |
vim | C-w,v | Duplicate window on side |
tmux | Prefix,s | New pane below |
tmux | Prefix,v | New pane on side |
i3 | Mod+d or Enter or g | Every app launches into a new window (find mod+g) |
Close Window / Pane / Window |
Context | Key | Action |
vim | C-w,q | Quit this window |
vim | C-w,o | Close other windows, leaving only this one. |
tmux | exit or C-d | Terminate the shell to close pane |
i3 | | Close the app its normal way |
Resize Window / Pane / Window |
Context | Key | Action |
vim | C-w,= | Make windows equal size |
vim | C-w,<>+- | <,> for width; +,- for height |
tmux | Prefix,HJKL | Change dimension in that direction |
tmux | Prefix,C-arrow | Change dimension in that direction |
i3 | Mod+r,hjkl | Enter resize mode (or drag bar with mouse) |
Maximize Window / Pane / Window |
Context | Key | Action |
vim | Leader,o | Maximize only this window in new tab (find <leader>o) |
tmux | Prefix,z | toggle maximize |
i3 | Mod+f | maximize window |
Navigate Window, Buffer / Pane / Window |
Context | Key | Action |
vim | C-w,hjkl | Select that window |
vim | tab | Next buffer (in this window) (find <Tab>) |
tmux | Prefix,hjkl | Select that pane |
tmux | Prefix,tab | Next/prev pane, maximized (find Tab) |
i3 | Mod+hjkl | select that window |
Swap Window / Pane / Window |
Context | Key | Action |
vim | C-w,HJKL | Move window in that direction |
tmux | Prefix,{ or } | Swap panes |
tmux | Prefix,space | Rotate splits |
i3 | Mod+HJKL | Move window in that direction |
New Tab / Window / Workspace |
Context | Key | Action |
vim | Leader,t,n or :tabnew | New tab |
tmux | Prefix,c | Create a new window |
i3 | Ctrl+Mod+Shift+o | Move to first available workspace (find $mod+Shift+Ctrl+o) |
Navigate Tab / Window / Workspace |
Context | Key | Action |
vim | gt or gT | Navigate prev or next tab |
tmux | Prefix,p or n | Previous or next window |
i3 | Ctrl+Mod+ ← or → or h or l | Change workspaces |
See git for general notes.
fixup and squash for appending fixes to commits you already made.
stash for stashing your local changes away. You can push
and pop
stashes.