I find myself working on the move a lot more recently and I often have to deal with poor terminal emulators, iffy connectivity and sometimes I need resume my work on another machine entirely. As such I am trying out tmux as a way of persisting my working environment between sessions, supporting multiple tabs for when my emulator lacks it (Looking at you PuTTY, Git Bash) and lastly allowing me to resume my work on another desktop.
My experimentation uses tmux 1.8, the version included in RHEL7, but I will include configuration options for later versions if I find any.
Gotchas
It seems a fair bit of configuration is needed in order to pass key combinations such as Ctrl+Arrow
through, that example can be solved by:
# File: .vimrc
" Tmux workaround
if &term =~ '^screen'
" tmux will send xterm-style keys when xterm-keys option is on
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
endif
# File: .tmux.conf
setw -g xterm-keys on
Text
Shift + Mouse drag
to highlight text while mouse mode is enabled
Windows
A single tmux instance can run multiple separate screens of panes, these are called windows.
prefix, w
to list windows, you select which window you want with the arrow keys and press enter to display it;
prefix, c
to create a window;
prefix, n
to switch to the next window;
prefix, p
to switch to the previous window;
prefix, 0-9
to switch to the nth window;