learnxinyminutes-docs/tmux.html.markdown
kaernyk 0f00fb2b7a Edit tmux.conf
- Added additional content to terminal management
- Sectioned each category, and restructured how they were grouped
- Removed 'set -g mode-bg' as users can read the manual page if this becomes something they want to customize
2014-09-08 09:02:45 -04:00

7.6 KiB
Raw Blame History

category tool contributors filename
tool tmux
kaernyk
http://github.com/kaernyk
LearnTmux.txt
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.
# Well start off with managing tmux from a terminal:

  tmux

  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
   -t 		    # List app panes in target

  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   



## 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

  (M-1) == Alt + b
  	   -or-
  	   Meta + b


# 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.


# Example tmux.conf  
# 2014.9  
  
  
### Keybinds  
###########################################################################  
  
# Unbind C-b as the default prefix   
unbind-key C-b  
  
# Set new default prefix  
set-option -g prefix `  
#set-option -g prefix C-a  
  
# Return to previous window when prefix is pressed twice  
bind-key C-a last-window  
bind-key ` last-window  
  
# Allow swapping C-a and ` using F11/F12   
bind-key F11 set-option -g prefix C-a  
bind-key F12 set-option -g prefix `  
  
# Activate inner-most session (when nesting tmux)  
# to send commands  
bind-key a send-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  
  
# easy-to-remember split pane commands  
bind | split-window -h  
bind - split-window -v  
unbind '"'  
unbind %  
  
# 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  
  
  
### Theme  
###########################################################################  
  
# Statusbar Color Palatte  
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  
###########################################################################  
  
# Statusbar  
set-option -g status-utf8 on  
  
# Keybind preference
setw -g mode-keys vi  
set-option -g status-keys vi  

# Notification  
setw -g monitor-activity on  
set -g visual-activity on  
set-option -g bell-action any  
set-option -g visual-bell off  
  
# Mouse  
setw -g mode-mouse on  
set-option -g mouse-select-pane on  
set -g mouse-resize-pane on  
set -g mouse-select-window on  
  
# 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)  
  
# Statusbar Adjustments  
set -g status-left '#[fg=red]#H#[fg=green]:#[fg=white]#S #[fg=green]][#[default] '  
set -g status-interval 3  
  
# Statusbar with right-aligned Date / Time  
#set -g status-right ' #[fg=green]][#[fg=white] #T #[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default] '  
  
# Show performance counters in statusbar  
# Requires https://github.com/thewtex/tmux-mem-cpu-load/  
#set -g status-right ' #[fg=green]][#[fg=white] #(tmux-mem-cpu-load 5 4) #[fg=green]][ #[fg=yellow]%H:%M#[default] '  
 
  
### Misc                                                                                                                          
###########################################################################  
  
# Scrollback/History limit  
set -g history-limit 4096  
  
bind r source-file ~/.tmux.conf

External Resources

Tmux | Home
Manual page
Display CPU/MEM % in statusbar
Archlinux Wiki
Gentoo Wiki