##Homebrew 安裝 tmux
首先要安裝 Homebrew,沒有安裝過的話只要在終端機執行這一行指示即可:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
儘管剛剛才安裝 Homebrew 但是還是要先更新一下再安裝程式:
brew update
brew install tmux
2013.04.19 更新:Youtube 上 tmux Quick Start 這部影片介紹非常清楚,值得一看。
從 SuperUser 看到的答案,如果關閉終端機掛載在上面的 shells 也會跟著被刪除,結構就像是這樣:
iterm2
+---- shell
+---- shell
+---- shell
tmux 採用 client-server 的 model,每一個 session 作為一個 client。透過 tmux 仍然會保持所有 shells 繼續運作,即便把整個終端機都關閉,因此可以之後重新將他們重新掛載上去,這也是為什麼在 tmux 下用 ssh 登入遠端主機不會斷線的原因:
iterm2
+---- tmux
+---- shell
+---- shell
+---- shell
直接在終端機執行 tmux
會開啟第一個 client,可以執行 tmux ls
查看有哪些 client,如果沒有任何 client 可以用,tmux 會自動建立一個。執行 tmux 後終端機底部會顯示一條狀態欄:
tmux 預設的操作要加上 Ctrl-b 功能鍵;tmux 也有類似 Vim 的指令模式,快捷鍵 Ctrl-b 後按 :
可以執行指令。以下是一些基本、常用的功能:
- Ctrl-b + c:建立新的視窗;
- Ctrl-b + d:卸載目前的 client;
- Ctrl-b + l:與先前選擇的視窗間切換;
- Ctrl-b + n:移動到下個視窗;
- Ctrl-b + p:移動到上個視窗;
- Ctrl-b + &:刪除目前的視窗;
- Ctrl-b + ,:重新命名目前的視窗;
- Ctrl-b + %:將目前的視窗分離到兩個區塊;
- Ctrl-b + q:顯示各分割區塊的號碼(用來切換到不同的區塊)
- Ctrl-b + o:切換到下個區塊;
- Ctrl-b + ?:列出所有快捷鍵的說明;
- Ctrl-b + w:列出目前 clinet 的視窗,可以用數字鍵切換;
要將目前視窗切割多個區塊,快捷鍵如下:
- Ctrl-b + %:垂直分離視窗;
- Ctrl-b +
:split-window
:水平分離視窗; - Ctrl-b + o:移往下一個區塊;
- Ctrl-b + q:顯示區塊的數字代號,當數字顯示時使用數字鍵移往該區塊;
- Ctrl-b + {:將目前的區塊移往左邊;
- Ctrl-b + }:將目前的區塊移往右邊;
切割面板區塊的快捷鍵好像有點難記,可以在根目錄下建立 ~/.tmux.conf 檔案,定義自己容易記憶的快捷鍵:
unbind %
bind | split-window -h
bind – split-window -v
Ctrl-b 距離太遠也很難按,先前有用 GNU screen 的人會將它改成 Ctrl-a,可是這會和某些快捷鍵衝突,所以我把它改成 Ctrl-f:
set -g prefix C-f
unbind C-b
bind C-f send-prefix
我的 .tmux.conf 檔案放在我 Github 上的 .dotfiles 裡,有興趣可以去看看,這裡附上最後我修改的成果圖,加上原本 oh-my-zsh 修改結果,整個變得超級花俏啊 XD(點圖可放大):
底下的 status bar 是抄 wemux 作者的設定,我覺得非常漂亮。最後推薦這兩個連結的文章,介紹非常詳細:
iTerm2 wiki 頁面上有教怎麼跟 tmux 整合,看了一下說要下載一些東西,然後還要編譯過才能用,可是我發現我直接輸入 tmux -CC
就可以用了,不清楚發生什麼事。
跟 iTerm2 整合的好處是可以用 iTerm2 的分頁和切割區塊功能取代 tmux 那些一堆的指令,可是我試用的結果發現很多不方便的地方,所以我還是用原本 tmux 切割區塊的方式。
目前發現有兩個問題。
在 tmux 下無法使用系統 pbcopy
等複製貼上的指令,在 thoughtbot 網站上找到解決方法:
brew install reattach-to-user-namespace
然後在 .tmux.conf 檔案裡加上以下這行設定:
set-option -g default-command "reattach-to-user-namespace -l zsh"
還有個問題是 git commit
我預設用的是 Sublime Text 2 編輯器,可是編輯提交訊息後會卡住不動,也就是 subl -w
無法返回,目前無解。