tmux is a terminal window manager, powerful but not always user friendly.
$ sudo apt install tmux
Launch with tmux.
Exit with exit or control+d on an empty line, and you’ll be back to the shell where you launched tmux.
The default key binding is control+b, which is the same keybinding for moving the cursor back a character, so let’s remap it.
I recommend control+space instead.
I don’t know of anything that uses this,
and space is the easiest key to press anyways.
tmux config goes in ~/.tmux.conf.
Uh oh, another bespoke configuration language incoming…
$ cat >> ~/.tmux.conf
set -g prefix ^Space
Honestly that’s all you really need.
From there you can use:
c-spc c to make a new terminal in a new tabc-spc p to go to the previous tabc-spc n to go to the next tabc-spc " to make a new terminal belowc-spc % to make a new terminal to the rightc-spc o to focus the other windowOne more keybinding is worth having: prefix space to go the previous tab.
I also bind prefix control+space since sometimes I haven’t let go of the control key.
bind Space last-window
bind ^Space last-window
You can add these to your tmux.conf and relaunch tmux
or activate it manually with tmux source-file ~/.tmux.conf,
or you can enter commands using tmux’s command mode.
To get the command mode prompt, the keybinding is prefix+:,
so control+space shift+;.
Enter your command and hit enter, and it’ll be applied. That’s all the tmux config file is doing, executing each line as a tmux command.
One useful keybinding is reloading the ~/.tmux.conf into your current tmux session, so you can edit ~/.tmux.conf and reload it without having to restart tmux.
I put this under prefix r. Since I split this up onto multiple lines, I have to escape the newline with \, and since it takes multiple commands (I first source the config, then display a message), I put a \; between the commands.
bind r \
source-file ~/.tmux.conf \; \
display "Reloaded ~/.tmux.conf"
Add these to your ~/.tmux.conf for vim-style hjkl pane movement.
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
https://git.sr.ht/~razzi/.dotfiles/tree/main/item/.tmux.conf