From 0833c79b34c36cf4121055f0bf929a5526d0d5ea Mon Sep 17 00:00:00 2001 From: kaernyk Date: Fri, 5 Sep 2014 07:48:24 -0400 Subject: [PATCH] Massive re-write I wanted to show a lot more than I had previously, though this may have gotten a little out of hand for a casual glance in comparison to the previous version. I feel that a majority of the available tools/features that tmux has to offer should be noticeable during a quick skim, and the bulk of the information is still digestible over a short period of time. --- LearnTmux.txt | 243 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 186 insertions(+), 57 deletions(-) diff --git a/LearnTmux.txt b/LearnTmux.txt index eaf3fd25..65ead04f 100644 --- a/LearnTmux.txt +++ b/LearnTmux.txt @@ -6,66 +6,195 @@ contributors: filename: LearnTmux.txt --- +```bash +# 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 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. +# Once you feel comfortable manipulating tmux to suit your needs, I strongly +# suggest you read the man pages, as there are TONS of features I’m not going +# to go over. - Once you feel comfortable manipulating tmux to suit your needs, I strongly -suggest you read the man pages. + +# We’ll start of with managing tmux from a terminal, then introduce you to the +# keybinds: + + tmux | tmux new # Create an unamed session + -s "Session" # Create named session + -n "Window" # Create named Window + -c "/dir" # Start in target directory + + tmux attach # Attach last/available session + -t "#" # Attach target session + -d # Detach the session from other instances + + tmux ls # List open sessions + + kill-session # Kill current session + -t "#" # Kill target session + -a # Kill all sessions + -a -t "#" # Kill all sessions but the target -``` -# Session Management - - tmux new Create new session - -s "Session" Create named session - -n "Window" Create named Window - -c "/dir" Start in target directory - - C^b $ Rename current session - C^b d Detach current session - C^b D Select session to detach - - tmux attach Attach last/available session - -t "#" Attach target session - -d Detach the session from other instances - - tmux ls List open sessions - C^b s Select new session for attached client interactively - - kill-session Kill current session - -t "#" Kill target session - -a Kill all sessions - -a -t "#" Kill all sessions but the target - - -# Window Management - - C^b c Create another window - C^b " Split Horizontally - C^b % Split Vertically - C^b M-(1-5) 1) Tile vertically - 2) Tile horizontally - 3) Tile Vertically /w large horizontal - 4) Tile horizontally /w large vertical - 5) Tile all windows evenly - - C^b q Briefly display pane indexes - C^# Choose current window by # - C^b w Choose current window interactively - C^b n Change to next window - C^b p Change to previous window - C^b Up, Right Change to pane in selected direction - Down, left - C^b { Swap current/previous window - C^b } Swap current/next window - - C^b C-Up, Right Resize in steps of one cell - Down, left - C^b M-Up, Right resize in steps of five cells - Down, left - - exit or C^b x Kill the current window +## Key Bindings + +# The method of controlling an attached tmux session is fairly simple, but +# there are two keys we will see repeated throughout this write-up (as well as +# the man pages). + + (C-b) == Ctrl + b THEN ? to list all keybinds + +# The default keybinds are as follows: + + C-b # Send the prefix key (C-b) through to the application. + C-o # Rotate the panes in the current window forwards. + C-z # Suspend the tmux client. + ? # List all key bindings. + : # Enter the tmux command prompt. + r # Force redraw of the attached client. + + c # Create a new window. + $ # Rename the current session. + , # Rename the current window. + + ! # 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. + + 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. + + s # Select a new session for the attached client interactively. + w # Choose the current window interactively. + 0 to 9 # Select windows 0 to 9. + + d # Detach the current client. + D # Choose a client to detach. + + & # Kill the current window. + x # Kill the current pane. + + Up, Down # Change to the pane above, below, left, or right. + Left, Right + + M-1 to M-5 # Arrange panes: + # 1) even-horizontal + # 2) even-vertical + # 3) main-horizontal + # 4) main-vertical + # 5) tiled. + + C-Up, C-Down # Resize the current pane in steps of one cell. + C-Left, C-Right + + M-Up, M-Down # Resize the current pane in steps of five cells. + M-Left, M-Right +``` + + +### Configuring ~/.tmux.conf + + tmux.conf can be used to set options automatically on start up, much +like how .vimrc or init.el are used. + +```bash +# Example tmux.conf +# http://dev.gentoo.org/~wired/conf/tmux.conf +# http://wiki.gentoo.org/wiki/Tmux +# https://wiki.archlinux.org/index.php/Tmux + +### Keybinds +########################################################################### + +## Prefix Adjustment +unbind-key C-b +set-option -g prefix ` +#set option -g prefix C-a + +bind-key C-a last-window +bind-key ` last-window +bind-key a send-prefix +bind-key F11 set-option -g prefix C-a +bind-key F12 set-option -g prefix ` + +## Index Start +set -g base-index 1 + +## Window Cycle/Swap +bind e previous-window +bind f next-window +bind E swap-window -t -1 +bind F swap-window -t +1 + + +### Theme +########################################################################### + +## Statusbar Color Palatte +#set-option -g status-justify centre +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 + + +#setw -g mode-bg black + + +## 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 +########################################################################### + +## Window Interface Adjustments +set-option -g status-utf8 on +setw -g mode-keys vi +setw -g mode-mouse on +setw -g monitor-activity on + +set-option -g mouse-select-pane on +set-option -g status-keys vi +set-option -g bell-action any +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) +set-option -g visual-bell off + + +## Statusbar Adjustments +set -g status-left ' #[fg=red]#H#[fg=green]:#[fg=white]#S #[fg=green]][#[default] ' +set -g status-interval 5 +#set -g status-right ' #[fg=green]][#[fg=white] #T #[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default] ' +set -g status-right ' #[fg=green]][#[fg=white] #(tmux-mem-cpu-load 5 4) #[fg=green]][ #[fg=yellow]%H:%M#[default] ' + + +### Misc +########################################################################### +set -g history-limit 4096 +bind r source-file ~/.tmux.conf ```