Tmux
General Information
Tmux is a terminal multiplexer. It is basically screen with more advanced features.
Checklist
- Distro(s): Any
- Package: tmux
Install
Install tmux:
yum install tmux or apt-get install tmux
Tmux Operation
1) Open a terminal
2) Start a tmux session (default name)
tmux
Session Control
Start a named tmux session
tmux new -s MySession
Detach from open session
Ctrl+b d
List tmux sessions
tmux list-sessions
Attach to session
tmux attach -t MySession
Rename existing session
Ctrl+b :rename-session MyAwesomeName
Windows
Like screen, tmux has windows.
Create a new window
Ctrl+b c
Next Window
Ctrl+b n
Previous Window
Ctrl+b p
Rename Window
Ctrl+b , MyWindow
Panes
An advantage that tmux has over screen, is the ability to create panes.
Split window horizontally
Ctrl+b "
Split window vertically
Ctrl+b %
Kill current pane
Ctrl+b x
OR
exit
Navigate between panes
Ctrl+b up/down/left/right (arrow keys)
Maximize current pane (other pane moves to its own window)
Ctrl+b !
Auto-resize panes to equal space horizontally
Ctrl+b ESC+2
Auto-resize panes to equal space vertically
Ctrl+b ESC+1
Copy/Paste with Keyboard
Enter copy mode
Ctrl+b [
While in copy mode
- Move around: arrow keys
- Start selection: space
- Copy selection: enter
Paste selection
Ctrl+b ]
Other Commands
Help
Ctrl+b ?
List Commands
Ctrl+b :list-commands
Tmux Config File
You can customize tmux with a config file in your home directory.
The following is a running list of customizations I find useful.
~/.tmux.conf
# use the vim motion keys to move between panes bind-key h select-pane -L bind-key j select-pane -D bind-key k select-pane -U bind-key l select-pane -R # set history scroll back size (default is 2000, also set terminal scroll back to be >= ) set-option -g history-limit 5000 # start window index at 1 instead of 0 set -g base-index 1 # Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC" # Set default shell set-option -g default-shell /bin/zsh # Allow mouse click to select a pane to be active set -g mouse-select-pane on # Mouse wheel scrolling for individual panes (newer versions of tmux; ie Fedora 27) set -g mouse on bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'" # Mouse wheel scrolling for individual panes (older versions of tmux; ie CentOS 7) set -g mode-mouse on
- Notes:
- When enabling mouse options in tmux, the ability to highlight text as normal for a copy/paste operation goes away. Using shift temporarily over rides tmux capture of the mouse.
- To copy/paste (if using mouse options)
- hold shift, select text, copy
- hold shift, right click, paste (or middle click)
Tmux Aliases
Some useful tmux aliases from ~/.bashrc
# Tmux Aliases alias tls='tmux list-sessions' alias tat='tmux attach -t' alias tns='tmux new -s'