summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorkaernyk <kaernyk@users.noreply.github.com>2014-09-05 07:48:24 -0400
committerkaernyk <kaernyk@users.noreply.github.com>2014-09-05 07:48:24 -0400
commit0833c79b34c36cf4121055f0bf929a5526d0d5ea (patch)
tree4135aa19ff14b907db783d8151280fa6eecb96b5
parent9f791e1e66c1ff2e42d7fa9ac5ad42e36037176e (diff)
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.
-rw-r--r--LearnTmux.txt241
1 files changed, 185 insertions, 56 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:
-
-```
-# 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 | 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 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
+ 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
+```
+
+
+### 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
```