"Tmux Wiki" "Installation of CentOS7" "Introduction" "Key Bindings" "Configuring ~/.tmux.conf" "References" Tmux Wiki The follow contents is mainly re ...
Tmux Wiki
The follow contents is mainly reprinted of Learn X in Y minutes - tmux.
Installation of CentOS7
# dependce packages
yum install ncurses-devel libevent-devel
# download source code package
wget https://github.com/tmux/tmux/releases/download/2.8/tmux-2.8.tar.gz
# extract & make & make install
tar -zxvf tmux-2.8.tar.gz
cd tmux-2.8
./configure --prefix=/opt/tmux
make && make install
# set PATH
export PATH=$PATH:/opt/tmux/bin
Introduction
tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background then later reattached.
tmux conform C/S mode, including followed modules:
- server - run
tmux
in terminal to start a server; - session - a server can include serveral sessions;
- window - a session can include serveral windows;
- pane - a window can include serveral panes.
DIRECTIVE | Description |
---|---|
tmux [command] | Run a command |
'tmux' with no commands will create a new session | |
COMMAND/OPTION | |
[new] | Create a new session |
-s "Session" | Create named session |
-n "Window" | Create named Window |
-c "/dir" | Start in target directory |
[attach] | Attach last/available session |
-t "#" | Attach target session |
-d | Detach the session from other instances |
[ls] | List open sessions |
-a | List all open sessions |
[lsw] | List windows |
-a | List all windows |
-s | List all windows in session |
[lsp] | List panes |
-a | List all panes |
-s | List all panes in session |
-t | List all panes in target |
[kill-window] | Kill current window |
-t "#" | Kill target window |
-a | Kill all windows |
-a -t "#" | Kill all windows but the target |
[kill-session] | Kill current session |
-t "#" | Kill target session |
-a | Kill all sessions |
-a -t "#" | Kill all sessions but the target |
Key Bindings
The method of controlling an attached tmux session is via key combinations called 'Prefix' keys.
Key | Description |
---|---|
C-b | 'Prefix' combination required to use keybings |
M-1 | |
SYSTEM | |
? | List all key bindings |
: | Enter the tmux command prompt |
r | Force redraw of the attached client |
t | Show current time |
d | Detach the current client |
D | Choose a client to detach |
[ | Enter Copy Mode to copy text or view history. |
~ | Show info messages |
s | Select a new session for the attached client |
WINDOW | |
c | Create a new window |
n | Change to the next window |
p | Change to the previous window |
l | Switch to last window |
w | Choose the current window interactively |
& | Kill the current window |
0-9 | Select windows 0 to 9 |
, | Rename current window |
. | Renumber current window NO. |
f | Find plain in all windows |
PANE | |
% | Split the current pane into two, left and right |
" | Split the current pane into two, top and bottom |
q | Show NO. of splited panes |
; | Switch to last pane |
U/D/L/R | Change to the pane above, below, left, or right |
! |
Break the current pane out of the window. |
x | Kill the current pane |
o | Switch to next pane in current window |
C-o | Rotate all panes anti-clockwise |
M-o | Rotate all panes clockwise |
C-U/D/L/R | Resize the current pane in steps of one cell |
M-U/D/L/R | Resize the current pane in steps of five cells |
Space | Toggle in preset pane layouts including even-horizontal, even-vertical, main-horizontal, main-vertical, tiled |
{ | Swap the current pane with the previous pane |
} | Swap the current pane with the next pane |
M-1 to M-5 | Arrange panes |
M-1 | even-horizontal |
M-2 | even-vertical |
M-3 | main-horizontal |
M-4 | main-vertical |
M-5 | tiled |
Configuring ~/.tmux.conf
tmux.conf
can be used to set options automatically on start up, much like how .vimrc
or init.el
are used.
# Example tmux.conf
### General
# Scrollback/History limit
set -g history-limit 2048
# Index Start
set -g base-index 1
# Mouse
set-option -g -q mouse on
# Force reload of config file
unbind r
bind r source-file ~/.tmux.conf
### Keybinds
# Unbind C-b as the default prefix
unbind C-b
# Set new default prefix
set-option -g prefix `
# Return to previous window when prefix is pressed twice
bind C-a last-window
bind ` last-window
# Allow swapping C-a and ` using F11/F12
bind F11 set-option -g prefix C-a
bind F12 set-option -g prefix `
# Keybind prefrence
setw -g mode-keys vi
set-option -g status-keys vi
# Moving between panes with vim movement keys
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Window Cycle/Swap
bind e previous-window
bind f next-window
bind E swap-window -t -1
bind F swap-window -t +1
# Easy split pane commands
bind = split-window -h
bind - split-window -v
unbind '"'
unbind %
# Activate inner-most session (when nesting tmux) to send commands
bind a send-prefix
### Theme
# Statusbar Color Palatte
set-option -g status-justify left
set-option -g status-bg black
set-option -g status-fg white
set-option -g status-left-length 40
set-option -g status-right-length 80
# Pane Border Color Palette
set-option -g pane-active-border-fg green
set-option -g pane-active-border-bg black
set-option -g pane-border-fg white
set-option -g pane-border-bg black
# Message Color Palette
set-option -g message-fg black
set-option -g message-bg green
# Window Status Color Palette
setw -g window-status-bg black
setw -g window-status-current-fg green
setw -g window-status-bell-attr default
setw -g window-status-bell-fg red
setw -g window-status-activity-attr default
setw -g window-status-activity-fg yellow
### UI
# Notification
setw -g monitor-activity on
set -g visual-activity on
set-option -g bell-action any
set-option -g visual-bell off
# Automatically set window titles
set-option -g set-titles on
set-option -g set-titles-string '#H:#S.#I.#P #W #T' # window number,program name,active (or not)
# Statusbar Adjustments
set -g status-left "#[fg=red] #H#[fg=green]:#[fg=white]#S#[fg=green] |#[default]"
# Show performance counters in statusbar
# Requires https://github.com/thewtex/tmux-mem-cpu-load/
set -g status-interval 4
set -g status-right "#[fg=green] | #[fg=white]#(tmux-mem-cpu-load)#[fg=green] | #[fg=cyan]%H:%M #[default]"