learnxinyminutes-docs/tmux.html.markdown

256 lines
6.9 KiB
Markdown
Raw Normal View History

2014-09-10 05:54:24 +04:00
---
category: tool
tool: tmux
contributors:
2015-01-20 06:10:37 +03:00
- ["mdln", "https://github.com/mdln"]
2014-09-10 05:54:24 +04:00
filename: LearnTmux.txt
---
2015-04-19 05:59:11 +03:00
[tmux](http://tmux.sourceforge.net)
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.
2014-09-10 05:54:24 +04:00
```
2014-09-10 05:54:24 +04:00
tmux [command] # Run a command
# 'tmux' with no commands will create a new session
2014-09-10 05:54:24 +04:00
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
2015-10-15 23:58:52 +03:00
-t # List all panes in target
2014-09-10 05:54:24 +04:00
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
2015-04-19 05:54:26 +03:00
```
2014-09-10 05:54:24 +04:00
2015-04-19 05:54:26 +03:00
### Key Bindings
2014-09-10 05:54:24 +04:00
2015-04-19 05:54:26 +03:00
The method of controlling an attached tmux session is via key
combinations called 'Prefix' keys.
2014-09-10 05:54:24 +04:00
2015-04-19 05:54:26 +03:00
```
----------------------------------------------------------------------
2014-09-10 05:54:24 +04:00
(C-b) = Ctrl + b # 'Prefix' combination required to use keybinds
(M-1) = Meta + 1 -or- Alt + 1
----------------------------------------------------------------------
2014-09-10 05:54:24 +04:00
? # List all key bindings
: # Enter the tmux command prompt
r # Force redraw of the attached client
c # Create a new window
2014-09-10 05:54:24 +04:00
! # Break the current pane out of the window.
% # Split the current pane into two, left and right
" # Split the current pane into two, top and bottom
2014-09-10 05:54:24 +04:00
n # Change to the next window
p # Change to the previous window
{ # Swap the current pane with the previous pane
} # Swap the current pane with the next pane
2014-09-10 05:54:24 +04:00
s # Select a new session for the attached client
interactively
w # Choose the current window interactively
0 to 9 # Select windows 0 to 9
2014-09-10 05:54:24 +04:00
d # Detach the current client
D # Choose a client to detach
2014-09-10 05:54:24 +04:00
& # Kill the current window
x # Kill the current pane
2014-09-10 05:54:24 +04:00
Up, Down # Change to the pane above, below, left, or right
Left, Right
2014-09-10 05:54:24 +04:00
M-1 to M-5 # Arrange panes:
# 1) even-horizontal
# 2) even-vertical
# 3) main-horizontal
# 4) main-vertical
# 5) tiled
2014-09-10 05:54:24 +04:00
C-Up, C-Down # Resize the current pane in steps of one cell
C-Left, C-Right
2014-09-10 05:54:24 +04:00
M-Up, M-Down # Resize the current pane in steps of five cells
M-Left, M-Right
2014-09-10 05:54:24 +04:00
```
2014-09-10 05:54:24 +04:00
### Configuring ~/.tmux.conf
2015-04-19 05:54:26 +03:00
tmux.conf can be used to set options automatically on start up, much
2014-09-10 05:54:24 +04:00
like how .vimrc or init.el are used.
```
2014-09-10 05:54:24 +04:00
# Example tmux.conf
# 2014.10
### General
###########################################################################
# Enable UTF-8
setw -g utf8 on
set-option -g status-utf8 on
# Scrollback/History limit
set -g history-limit 2048
# Index Start
set -g base-index 1
# Mouse
set-option -g mouse-select-pane on
2014-09-10 05:54:24 +04:00
# Force reload of config file
unbind r
bind r source-file ~/.tmux.conf
2014-09-10 05:54:24 +04:00
### Keybinds
###########################################################################
2014-09-10 05:54:24 +04:00
# Unbind C-b as the default prefix
unbind C-b
# Set new default prefix
set-option -g prefix `
2014-09-10 05:54:24 +04:00
# Return to previous window when prefix is pressed twice
bind C-a last-window
bind ` last-window
2014-09-10 05:54:24 +04:00
# Allow swapping C-a and ` using F11/F12
bind F11 set-option -g prefix C-a
bind F12 set-option -g prefix `
2014-09-10 05:54:24 +04:00
# Keybind preference
setw -g mode-keys vi
set-option -g status-keys vi
2014-09-10 05:54:24 +04:00
# 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
2014-09-10 05:54:24 +04:00
# 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
2014-09-10 05:54:24 +04:00
bind - split-window -v
unbind '"'
unbind %
# Activate inner-most session (when nesting tmux) to send commands
bind a send-prefix
2014-09-10 05:54:24 +04:00
### Theme
###########################################################################
2014-09-10 05:54:24 +04:00
# Statusbar Color Palatte
2014-09-10 05:54:24 +04:00
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-content-attr default
setw -g window-status-content-fg yellow
setw -g window-status-activity-attr default
setw -g window-status-activity-fg yellow
### UI
###########################################################################
2014-09-10 05:54:24 +04:00
# 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)
2014-09-10 05:54:24 +04:00
# Statusbar Adjustments
set -g status-left "#[fg=red] #H#[fg=green]:#[fg=white]#S#[fg=green] |#[default]"
2014-09-10 05:54:24 +04:00
# 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]"
```
2015-04-19 05:54:26 +03:00
### References
[Tmux | Home](http://tmux.sourceforge.net)
[Tmux Manual page](http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1?query=tmux)
[Gentoo Wiki](http://wiki.gentoo.org/wiki/Tmux)
[Archlinux Wiki](https://wiki.archlinux.org/index.php/Tmux)
[Display CPU/MEM % in statusbar](https://stackoverflow.com/questions/11558907/is-there-a-better-way-to-display-cpu-usage-in-tmux)
2015-10-18 03:57:36 +03:00
[tmuxinator - Manage complex tmux sessions](https://github.com/tmuxinator/tmuxinator)