Blog Tags: 

tmux is a superior alternative to screen

Today was the first day I stopped using screen and started using tmux, which is a superior alternative which supports a more complex range of splits and has a nicer interface. It's a bit different from screen in that it has this concept of windows and panes. A tmux pane is a window (e.g., shell session) in screen terminology. A tmux window is a layout of panes (e.g., two windows side by side). A tmux window could have only one pane, or it could have an arbitrarily complex configuration of panes.

My initial impetus for investigating screen alternatives is that I hated having to run more than one terminal to on my screen to get the layout I wanted. I also find it infuriating to have to use the mouse to setup my terminal workspace.

Important commands:

tmux            start new tmux session
tmux attach     attach to existing tmux session

Important default key bindings

Tmux uses C-b instead of C-a as the control character. Which is great since C-a actually means something in shell-land (move to the start of the command)

Here is a shorthand listing of keys. Prepend C-b to invoke them.

General:

?                           full list of key bindings
d                           detach from tmux session
C-z                         suspend tmux

Pane keys:

"                           split horizontally
%                           split vertically
x                           kill current pane

up/down/right/left          navigate between window panes
                            (you can also click on the pane with the
                            mouse)

C-up/down/right/left        resize window pane

space                       automatic re-layout of panes
}                           swap pane in layout forward
{                           swap pane in layout backward

Cut and paste / clipboard keys:

[                           copy mode (cut and paste with keyboard)

                            Copy mode has its own key bindings:

                                cursors + page-up/page-down: move around
                                space: start selection
                                enter: copy selection

]                           paste buffer

C-c                         copy buffer to X clipboard
C-v                         paste buffer from X clipboard

Window keys:

c                           create new window
1-9                         switch to window number ...
n                           next window
p                           previous window
,                           rename window

!                           maximize current pane

Advanced:

:                           command line mode
:list-commands              list commands

My tmux configuration file:

cat > $HOME/.tmux.conf << EOF

set -g status off
set -g mouse-select-pane on
set -g base-index 1
set-window-option -g mode-keys vi
set-window-option -g mode-mouse on

bind-key C-c run-shell "tmux show-buffer | xclip -i"
bind-key C-v run-shell "tmux set-buffer \\"$(xclip -o)\\"; tmux paste-buffer"

EOF

Comments

Liraz Siri's picture

Hi Jeremiah, Alon recommended I try out byobu 4 years ago and I think we briefly considered making it the default. I remember there was a problem that prevented us from doing that but to be honest I don't remember what that was. It's probably evolved since so maybe I should give it another try.

Pages

Add new comment