mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-25 10:25:23 +00:00
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.
This commit is contained in:
parent
9f791e1e66
commit
0833c79b34
229
LearnTmux.txt
229
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
|
||||
|
||||
|
||||
|
||||
## 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
|
||||
```
|
||||
# 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
|
||||
### Configuring ~/.tmux.conf
|
||||
|
||||
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
|
||||
tmux.conf can be used to set options automatically on start up, much
|
||||
like how .vimrc or init.el are used.
|
||||
|
||||
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
|
||||
```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
|
||||
|
||||
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
|
||||
### Keybinds
|
||||
###########################################################################
|
||||
|
||||
exit or C^b x Kill the current window
|
||||
## 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
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user