Fork me on GitHub

1/14/2012

tmux - A powerful terminal multiplexer

tmux 顧名思義 terminal multiplexer 是一個終端多工器,什麼時候會需要呢?

  1. 當你需要開啟多個終端視窗,但是又不希望底下的視窗列被擠得滿滿
  2. 階層的概念讓你可以將終端依照任務的需求群組起來 (Session -> Window -> Pane)
  3. 使用 ssh 連入主機時,可以方便 user 不需要開啟多個 ssh 連線也可以開啟多個終端視窗

以下就紀錄一下這幾天下來的一些使用心得和筆記

Installation

sudo apt-get install tmux

Hierachy

Session 可以把他想像成 task 的概念,要完成一個 task 可能會需要開啟很多的終端。例如: 開啟 vim 的終端、開啟 git 的終端、開啟 grep 的終端, 等等...。這一個個的終端在 tmux 當中就是一個一個的 Window。所以,Window 算是一個終端基本單元,而 Session 就是 Window 的容器。

tmux 的功能鍵有一個前綴,預設是 Ctrl + b,但是改成 Ctrl + a 應該會比較方便, 下面用 Prefix 表示

tmux new -s <session-name>          // 創建一個 session, 然後進入該 session
tmux kill-session -t <session-name> // 刪除 session

當你建立了一個 session,你可以在任意時間離開它,然後在任意時間回到這個 session 而不遺失任何你離開前開啟的 window。

<Prefix> + d                    // 離開 session, d: detach
<Prefix> + s                    // 列出所有 session, 並可以跳轉
tmux attach -t <session-name>   // 回到 session 

在學會 attach/detach 以後,接著就是如何在 session 裡頭建立 Window

tmux neww -n <window-name>      // 建立新 window
<Prefix> + ,                    // 更改 window 名稱
<Prefix> + 數字鍵                // 跳轉 window
<Prefix> + x                    // 刪除 window

tmux.conf

以上就是一些 tmux 的簡單操作,此外 tmux 有一個 tmux.conf 可以讓使用者將 tmux.conf 客製化成更稱手的兵器。

// remap prefix to Control + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

// set window start from 1
set -g base-index 1

// scrollback buffer n lines
set -g history-limit 5000

// C-a C-a for the last active window
bind-key C-a last-window

// Highlight active window
set-window-option -g window-status-current-bg red

// Default colors
set -g status-bg black
set -g status-fg white

// Left side of status bar
set -g status-left-length 20
set -g status-left '#[fg=green][#[bg=black,fg=cyan]#S#[bg=black,fg=blue,dim]#[fg=green]]'

// <Prefix> - 水平分割視窗
bind - split-window -v
// <Prefix> - 垂直分割視窗
bind | split-window -h

Reference

  1. Practical Tmux
  2. How do I scroll in tmux
  3. Tmux試用感想

-- EOF --

No comments:

Post a Comment