若是說有什麼工具能夠用相見恨晚 來形容的話,Tmux 算一個。html
Tmuxs 是一款優秀的終端複用工具,使用它最直觀的好處就是,經過一個終端登陸遠程主機並運行tmux後,在其中能夠開啓多個控制檯而無需再「浪費」多餘的終端來鏈接這臺遠程主機;git
使用 Tmux 的時候千萬不要去背指令,全部的指令均可以在 .tmux.conf
配置文件中綁定本身順手的快捷鍵,也能夠配置開啓鼠標。github
這個是個人配置文件:https://github.com/zuorn/tmux.conf編程
在Tmux邏輯中,須要分清楚Server > Session > Window > Pane這個大小和層級順序是極其重要的,直接關係到工做效率:ubuntu
瞭解了這個邏輯後,整個Tmux的使用和配置也就清晰了。
(ps:下面這種方便好看的Status bar狀態欄,顯示的是windows,而不是sessions)
segmentfault
在 Mac OS 中,經過 brew 安裝windows
brew install tmux
ubuntu版本下直接apt-get安裝centos
sudo apt-get install tmux
centos7版本下直接yum安裝緩存
yum install -y tmux ```sh centos6版本須要編譯安裝 ```sh yum install libevent libevent-devel ncurses-devel tar -zvxf tmux-2.3.tar.gz # (提早下載:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz) cd tmux-2.3 ./configure make && make install
#啓動新session: $ tmux [new -s 會話名 -n 窗口名] #恢復session: $ tmux at [-t 會話名] #列出全部sessions: $ tmux ls #關閉session: $ tmux kill-session -t 會話名 #關閉整個tmux服務器: $ tmux kill-server
所謂內部命令,就是進入Tmux後,並按下前綴鍵後的命令,通常前綴鍵爲Ctrl+b. 雖然ctrl和b離得很遠可是不建議改前綴鍵,由於別的鍵也不見得方便好記不衝突。仍是記憶默認的比較可靠。服務器
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | ? | 顯示快捷鍵幫助文檔 |
Ctrl+b | d | 斷開當前會話 |
Ctrl+b | D | 選擇要斷開的會話 |
Ctrl+b | Ctrl+z | 掛起當前會話 |
Ctrl+b | r | 強制重載當前會話 |
Ctrl+b | s | 顯示會話列表用於選擇並切換 |
Ctrl+b | : | 進入命令行模式,此時可直接輸入ls等命令 |
Ctrl+b | [ | 進入複製模式,按q退出 |
Ctrl+b | ] | 粘貼複製模式中複製的文本 |
Ctrl+b | ~ | 列出提示信息緩存 |
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | c | 新建窗口 |
Ctrl+b | & | 關閉當前窗口 |
Ctrl+b | 0~9 | 切換到指定窗口 |
Ctrl+b | p | 切換到上一窗口 |
Ctrl+b | n | 切換到下一窗口 |
Ctrl+b | w | 打開窗口列表,用於且切換窗口 |
Ctrl+b | , | 重命名當前窗口 |
Ctrl+b | . | 修改當前窗口編號(適用於窗口從新排序) |
Ctrl+b | f | 快速定位到窗口(輸入關鍵字匹配窗口名稱) |
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | " | 當前面板上下一分爲二,下側新建面板 |
Ctrl+b | % | 當前面板左右一分爲二,右側新建面板 |
Ctrl+b | x | 關閉當前面板(關閉前需輸入y or n確認) |
Ctrl+b | z | 最大化當前面板,再重複一次按鍵後恢復正常(v1.8版本新增) |
Ctrl+b | ! | 將當前面板移動到新的窗口打開(原窗口中存在兩個及以上面板有效) |
Ctrl+b | ; | 切換到最後一次使用的面板 |
Ctrl+b | q | 顯示面板編號,在編號消失前輸入對應的數字可切換到相應的面板 |
Ctrl+b | { | 向前置換當前面板 |
Ctrl+b | } | 向後置換當前面板 |
Ctrl+b | Ctrl+o | 順時針旋轉當前窗口中的全部面板 |
Ctrl+b | 方向鍵 | 移動光標切換面板 |
Ctrl+b | o | 選擇下一面板 |
Ctrl+b | 空格鍵 | 在自帶的面板佈局中循環切換 |
Ctrl+b | Alt+方向鍵 | 以5個單元格爲單位調整當前面板邊緣 |
Ctrl+b | Ctrl+方向鍵 | 以1個單元格爲單位調整當前面板邊緣(Mac下 |
Ctrl+b | t | 顯示時鐘 |
$ git clone git@github.com:zuorn/tmux-config.git $ cp tmux-config/.tmux.conf ~/.tmux.conf
重啓 tmux restart tmux
或者 在 tmux 窗口中,先按下 Ctrl+b
指令前綴,而後按下系統指令:,進入到命令模式後輸入 source-file ~/.tmux.conf
,回車後生效。
可根據本身的喜愛來設置,如若要啓用,取消註釋便可。
#set -g prefix C-f # #unbind C-f # C-b 即 Ctrl+b 鍵,unbind 意味着解除綁定 #bind C-f send-prefix # 綁定 Ctrl+f 爲新的指令前綴 # 從tmux v1.6版起,支持設置第二個指令前綴 #set-option -g prefix2 ` # 設置一個不經常使用的`鍵做爲指令前綴,按鍵更快些
bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."
# 老版本: #setw -g mode-mouse on # 支持鼠標選取文本等 #setw -g mouse-resize-pane on # 支持鼠標拖動調整面板的大小(經過拖動面板間的分割線) #setw -g mouse-select-pane on # 支持鼠標選中並切換面板 #setw -g mouse-select-window on # 支持鼠標選中並切換窗口(經過點擊狀態欄窗口名稱) # v2.1及以上的版本 set-option -g mouse on
unbind '"' bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默認進入當前目錄 unbind % bind = splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默認進入當前目錄
綁定Ctrl+hjkl鍵爲面板上下左右調整邊緣的快捷指令
bind -r ^k resizep -U 10 # 綁定Ctrl+k爲往↑調整面板邊緣10個單元格 bind -r ^j resizep -D 10 # 綁定Ctrl+j爲往↓調整面板邊緣10個單元格 bind -r ^h resizep -L 10 # 綁定Ctrl+h爲往←調整面板邊緣10個單元格 bind -r ^l resizep -R 10 # 綁定Ctrl+l爲往→調整面板邊緣10個單元格
setw -g mode-keys vi # 開啓vi風格後,支持vi的C-d、C-u、hjkl等快捷鍵
bind -t vi-copy v begin-selection # 綁定v鍵爲開始選擇文本 bind -t vi-copy y copy-selection # 綁定y鍵爲複製選中文本 bind p pasteb # 綁定p鍵爲粘貼文本(p鍵默認用於進入上一個窗口,不建議覆蓋)
set -g base-index 1 # 設置窗口的起始下標爲1 set -g pane-base-index 1 # 設置面板的起始下標爲1
set -g status-utf8 on # 狀態欄支持utf8 set -g status-interval 1 # 狀態欄刷新時間 set -g status-justify left # 狀態欄列表左對齊 setw -g monitor-activity on # 非當前窗口有內容更新時在狀態欄通知 set -wg window-status-format " #I #W " # 狀態欄窗口名稱格式 set -wg window-status-current-format " #I:#W#F " # 狀態欄當前窗口名稱格式(#I:序號,#w:窗口名稱,#F:間隔符) set -wg window-status-separator "" # 狀態欄窗口名稱之間的間隔
這個主要是因爲Tmux的後臺緩存機制形成的。我就犯了個大錯誤:甚至刪了Tmux、重裝Tmux、重啓電腦,都沒達成。
Tmux會有一個叫Tmux-server的東西。只要把它kill,重啓tmux就OK了:
tmux kill-server -a