之前用 tmux 的一些雜記,enjoy it!
一、tmux 簡介
程式設計師要在終端機下開發程式時(尤其 Mac 和 Unix-like 使用者),總是要使用一個高效率的終端選擇器 (terminal multiplexer),過去的程式設計師常用的終端選擇器是 screen,但現在有更方便操作的 tmux 囉!終端選擇器主要有以下功能:
- 輕鬆實現命令列視窗管理:如分割視窗、視窗切換,在需要高速切換檔案的系統程式設計尤其重要,和 Unix-like 的工具尤其契合。
- 保持工作環境狀態:例如,當 ssh 連線遠端伺服器突然斷線時,tmux 會讓該會話 (session) 在背景執行 (detached),只要連回該會話便可以馬上重回之前的工作環境。
因為我以前用過 screen 和 vim,所以下面的設定會調整成 screen-like 和 vim-like, 直接學 tmux 或使用 emacs 的使用者也可以在網路上找到相關的設定。
二、安裝與設定檔
老樣子,用套件管理工具無腦安裝:
brew install tmux # Mac apt-get install tmux # Ubuntu which tmux # check install tmux # start tmux world!
vim ~/.tmux.conf
貼上以下設定完成初步設定 (註釋有解釋設定了哪些功能):
### rebind hotkey # prefix setting (screen-like) set -g prefix C-a unbind C-b bind C-a send-prefix # reload config without killing server bind R source-file ~/.tmux.conf \; display-message "Config reloaded..." # "|" splits the current window vertically, and "-" splits it horizontally unbind % bind | split-window -h bind - split-window -v # Pane navigation (vim-like) bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # Pane resizing bind -r Left resize-pane -L 4 bind -r Down resize-pane -D 4 bind -r Up resize-pane -U 4 bind -r Right resize-pane -R 4 ### other optimization # set the shell you like (zsh, "which zsh" to find the path) # set -g default-command /bin/zsh # set -g default-shell /bin/zsh # use UTF8 # set -g utf8 # set-window-option -g utf8 on # display things in 256 colors set -g default-terminal "screen-256color" # mouse is great! set-option -g mouse on # history size set -g history-limit 10000 # fix delay set -g escape-time 0 # 0 is too far set -g base-index 1 setw -g pane-base-index 1 # stop auto renaming setw -g automatic-rename off set-option -g allow-rename off # renumber windows sequentially after closing set -g renumber-windows on # window notifications; display activity on other window setw -g monitor-activity on set -g visual-activity on
三、基本概念與操作
在 tmux 操作架構中,有以下基本名詞需要認識:
- 會話 (Session) : ,視窗的集合。
- 視窗 (Window) : 一個覆蓋滿區塊的視窗。
- 區塊 (Pane): 一個跑特定命令的區塊,例如 shell。
session、window 和 panel 示意圖 (ref)
在 tmux 中,都是按完 <prefix key> 後再按你需要的快捷指令,預設的 prefix 鍵位是 ctrl + b,我的 config 檔把它改到 screen-like 的 ctrl + a。常用的快捷指令如下:
1. 視窗指令
<prefix> c 開新視窗
<prefix> & 關閉視窗
<prefix> 0~9 切換至指定視窗
<prefix> n 切換到下一個視窗 (next)
<prefix> p 切換到上一個視窗 (previous)
<prefix> f 找尋指定 pattern 並跳到該視窗
<prefix> , 命名視窗
2. 區塊指令
<prefix> | 水平分割視窗
<prefix> - 垂直分割視窗
<prefix> 方向鍵 分割視窗大小調整
<prefix> h,j,k,l (vim 方向鍵) 切換游標所在區塊
<prefix> space 重新佈局分割視窗,內建多種佈局。
<prefix> x 關閉當前面板
<prefix> q 顯示面板編號
<prefix> { 交換面板位置(向前)
<prefix> } 交換面板位置(向後)
3. 系統操作
<prefix> d 將目前的 session 放到背景執行 (detach)
<prefix> s 切換 session
<prefix> [ 進入複製模式
<prefix> : 進入命令模式
<prefix> ? 查詢快捷鍵
4. 指令操作
直接在命令列上輸入指令,或在 tmux 中按下 <prefix> : 之後輸入 tmux 字串後的語句。
tmux 啟動
tmux ls 列出所有 session
tmux detach 背景執行
tmux attach -t [num] 回到第 [num] 號 sessiontmux detach 背景執行
tmux kill-session -t [num] 關閉第 [num] 號 session
tmux kill-session -a 關閉除了自己的所有 session
其他不常用的用到再看 Cheat Sheet : )
Tmux Cheat Sheet & Quick Reference
http://tmuxcheatsheet.com/
四、tmux 的套件管理工具: TPM
一個滿方便的 tmux 的套件管理工具,滿推薦的。
複製 tpm 專案:
複製 tpm 專案:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
在設定檔最後加上這些內容:
重啟終端機或 tmux source ~/.tmux.conf 後,進入 tmux 使用以下指令:### tmux plugin manager set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-yank' set -g @plugin 'jooize/tmux-powerline-theme' # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm'
- [prefix] + I 安裝插件
- [prefix] + U 更新插件
- [prefix] + alt + u 刪除插件
就完成囉!
References
http://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/
tpm - Tmux Plugin Manager
Harttle - 優雅地使用命令行:Tmux 終端覆用
Tmux Cheat Sheet & Quick Reference
http://tmuxcheatsheet.com/