====== 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'
----