在日常工作中,總是感覺用putty連線linux乙個視窗不夠用,再開新的視窗又比較麻煩,於是想到是否可以在乙個ssh會話中可以開啟多個終端,最後我找到了很強大而且使用廣泛的tmux多終端管理器。
tmux是乙個優秀的終端復用軟體,類似gnu screen,但來自於openbsd,採用bsd授權。使用它最直觀的好處就是,通過乙個終端登入遠端主機並執行tmux後,在其中可以開啟多個控制台而無需再使用更多的ssh會話來連線這台遠端主機;其功能遠不止於此。
1、安裝
在freebsd中可以直接使用ports工具安裝,位置在:/usr/ports/sysutils/tmux/,ubuntu系統下預設自帶byou,與tmux很像,甚至快捷鍵都是一樣的。這裡只詳細說明在centos6.3下如何安裝和使用tmux的。
centos6.3的軟體庫里沒有tmux,只有screen,所以要想使用tmux需要自己編譯安裝。
wget
(2) 編譯安裝:
tar zxvf tmux-1.6.tar.gz
cd tmux-1.6
./configure
make;make install
2、啟動tmux
安 裝完成後輸入命令tmux即可開啟軟體,介面十分簡單,類似乙個下方帶有狀態列的終端控制台;但根據tmux的定義,在開啟了tmux伺服器後,會首先創 建乙個會話,而這個會話則會首先建立乙個視窗,其中僅包含乙個面板;也就是說,這裡看到的所謂終端控制台應該稱作tmux的乙個面板,雖然其使用方法與終 端控制台完全相同。
tmux使用c/s模型構建,主要包括以下單元模組:
乙個tmux命令執行後啟動乙個tmux服務
乙個tmux服務可以擁有多個session,乙個session可以看作是tmux管理下的偽終端的乙個集合
乙個session可能會有多個window與之關聯,每個window都是乙個偽終端,會佔據整個螢幕
乙個window可以被分割成多個pane
多個pane的編號規則,以3個pane為例:
1 | 2
3、tmux快捷鍵
tmux在會話中使用大量的快捷鍵來控制多個視窗、多個會話等。
[cpp] view plaincopy在code上檢視**片派生到我的**片
ctrl+b // 啟用控制台;此時以下按鍵生效
系統操作
tmux ls //列出已有會話(list-sessions)
tmux a -t 1//來連線到第乙個會話
c-b t //鐘錶
? // 列出所有快捷鍵;按q返回
d // 脫離當前會話;這樣可以暫時返回shell介面,輸入tmux attach能夠重新進入之前的會話
d // 選擇要脫離的會話;在同時開啟了多個會話時使用
ctrl+z // 掛起當前會話
r // 強制重繪未脫離的會話
s // 選擇並切換會話;在同時開啟了多個會話時使用
: // 進入命令列模式;此時可以輸入支援的命令,例如kill-server可以關閉伺服器
[ // 進入複製模式;此時的操作與vi/emacs相同,按q/esc退出
~ // 列出提示資訊快取;其中包含了之前tmux返回的各種提示資訊
視窗操作
c // 建立新視窗
& // 關閉當前視窗
數字鍵 // 切換至指定視窗
p // 切換至上一視窗
n // 切換至下一視窗
l // 在前後兩個視窗間互相切換
w // 通過視窗列表切換視窗
, // 重新命名當前視窗;這樣便於識別
. // 修改當前視窗編號;相當於視窗重新排序
f // 在所有視窗中查詢指定文字
面板操作
」 // 將當前面板平分為上下兩塊
% // 將當前面板平分為左右兩塊
x // 關閉當前面板
! // 將當前面板置於新視窗;即新建乙個視窗,其中僅包含當前面板
ctrl+方向鍵 // 以1個單元格為單位移動邊緣以調整當前面板大小
alt+方向鍵 // 以5個單元格為單位移動邊緣以調整當前面板大小
space // 在預置的面板布局中迴圈切換;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q // 顯示面板編號
o // 在當前視窗中選擇下一面板
方向鍵 // 移動游標以選擇面板
// 向後置換當前面板
alt+o // 逆時針旋轉當前視窗的面板
ctrl+o // 順時針旋轉當前視窗的面板
4、配置檔案
tmux配置檔案在~/.tmux.conf和/etc/tmux.conf中,配置檔案中可以修改預設繫結的快捷鍵
配置檔案示例:
[cpp] view plaincopy在code上檢視**片派生到我的**片
// 此類配置可以在命令列模式中輸入show-options -g查詢
set-option -g base-index 1 // 視窗的初始序號;預設為0,這裡設定為1
set-option -g display-time 5000 // 提示資訊的持續時間;設定足夠的時間以避免看不清提示,單位為毫秒
set-option -g repeat-time 1000 // 控制台啟用後的持續時間;設定合適的時間以避免每次操作都要先啟用控制台,單位為毫秒
set-option -g status-keys vi // 操作狀態列時的預設鍵盤布局;可以設定為vi或emacs
set-option -g status-right 「#(date +%h:%m』 『)」 // 狀態列右方的內容;這裡的設定將得到類似23:59的顯示
set-option -g status-right-length 10 // 狀態列右方的內容長度;建議把更多的空間留給狀態列左方(用於列出當前視窗)
set-option -g status-utf8 on // 開啟狀態列的utf-8支援
// 此類設定可以在命令列模式中輸入show-window-options -g查詢
set-window-option -g mode-keys vi // 複製模式中的預設鍵盤布局;可以設定為vi或emacs
set-window-option -g utf8 on // 開啟視窗的utf-8支援
// 將啟用控制台的快捷鍵由ctrl+b修改為ctrl+a,ctrl+a是screen的快捷鍵
set-option -g prefix c-a
unbind-key c-b
bind-key c-a send-prefix
// 新增自定義快捷鍵
bind-key z kill-session // 按z結束當前會話;相當於進入命令列模式後輸入kill-session
bind-key h select-layout even-horizontal // 按h將當前面板布局切換為even-horizontal;相當於進入命令列模式後輸入select-layout even-horizontal
bind-key v select-layout even-vertical // 按v將當前面板布局切換為even-vertical;相當於進入命令列模式後輸入select-layout even-vertical
下面幾個是作者在日常工作中常用到的命令,事實上還有其他很多,但是一般用不到,也就不在這裡介紹,如果有興趣,可以參考官方教程。
tmux所有自帶命令都預設需要先按ctrl + b,然後再鍵入對應的命令
ctrl+b " - split pane horizontally
ctrl+b % - 將當前窗格垂直劃分
ctrl+b 方向鍵 - 在各窗格間切換
ctrl+b,並且不要鬆開ctrl,方向鍵 - 調整窗格大小
ctrl+b c - (c)reate 生成乙個新的視窗
ctrl+b n - (n)ext 移動到下乙個視窗
ctrl+b p - (p)revious 移動到前乙個視窗.
ctrl+b 空格鍵 - 採用下乙個內建布局
ctrl+b q - 顯示分隔視窗的編號
ctrl+b o - 跳到下乙個分隔視窗
ctrl+b & - 確認後退出 tmux
這幾個命令都試幾遍,這個工具基本上也就算上手了,簡單才是最重要的。
再順便提乙個「高階」點的用法:
我經常進了tmux後會習慣地再生成幾個窗格,好比上面那個圖中的布局,左邊乙個,右邊上下各乙個。而每次進了tmux都這樣輸命令,是不是很麻煩?有沒有辦法一進tmux,就自動生成如上的布局,答案是有的,方法應該不止一種。下面提供乙個作者選用的方法:
首先寫乙個指令碼,來建立各個窗格
~/.tmux/mylayout
selectp -t 0 #選中第0個窗格
splitw -h -p 50 #將其分成左右兩個
selectp -t 1 #選中第乙個,也就是右邊那個
splitw -v -p 50 #將其分成上下兩個,這樣就變成了圖中的布局了
selectp -t 0 #選回第乙個
在.tmux.conf 後面加上一句
bind d source-file ~/.tmux/mylayout
結束,這樣每次進入tmux後,鍵入 ctrl + b d
(d是大寫,要按shrift,你也可以按成其他字元,只要跟tmux已經用的不衝突即可),即會自動執行mylayout指令碼,生成圖示布局。如果
.tmux.conf 檔案不存在的話,請自己生成。注意前面有個.(點)
另外還有一些小功能,通過在.tmux.conf中新增相應的命令開啟對應的功能即可:
滑鼠可以選中窗格 set-option -g mouse-select-pane on
滑鼠滾輪可以用 set-window-option -g mode-mouse on
tmux使用教程
1,三個概念session,window,panel 2,session的操作 建立並指定session名字 tmux new s session name 臨時退出session ctrl b d 列出session tmux ls 進入已存在的session tmux a t session n...
tmux使用教程
brew install tmux在開啟了tmux服務後,會首先建立乙個會話,而這個會話則會首先先建立乙個視窗,其中僅包含乙個面板 也就是說,這裡看到的所謂終端控制台應該稱作tmux的乙個面板,雖然其使用方法與終端控制台完全相同 tmux使用c s模型構建,主要包括以下單元模組 server伺服器。...
Tmux 使用教程
命令列的典型使用方式是,開啟乙個終端視窗 terminal window,以下簡稱 視窗 在裡面輸入命令。使用者與計算機的這種臨時的互動,稱為一次 會話 session 會話的乙個重要特點是,視窗與其中啟動的程序是連在一起的。開啟視窗,會話開始 關閉視窗,會話結束,會話內部的程序也會隨之終止,不管有...