tmux使用筆記

2022-08-24 01:27:12 字數 4358 閱讀 1795

tmux是指通過乙個終端登入遠端主機並執行後,在其中可以開啟多個控制台的終端復用軟體。

yum方式安裝tmux

$ yum install tmux

其它方式安裝tmux

安裝tmux需要先安裝依賴包libevent,因為libevent安裝在臨時位置,所以在編譯tmux過程中用到ncurses-devel包(非必選,如果採用標註安裝,可不安裝ncurses-devel),安裝ncurses-devel:

$ yum install ncurses-devel

執行tmux提示找不到libevent-2.0.so.5檔案,顯示如下

$ tmux

tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: no such file or directory

這個檔案在/tmp/libevent/lib/libevent-2.0.so.5,將其拷貝到/usr/lib目錄下即可:

$ cp /tmp/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5

如果依然提示這個錯誤,檢查下/usr/lib是否在環境變數中

$ export ld_library_path="/usr/lib"

現在輸入tmux開啟乙個tmux會話

[root@localhost tmux-2.0]# tmux

ctrl + d  or exit 關閉tmux當前面板

tmux有三個基本概念:會話,視窗和面板。當你輸入tmux後,tmux實際做的事是首先建立乙個會話,然後在這個會話中建立乙個視窗,這個視窗只包含乙個面板,你在其中看到的終端實際上都屬於tmux的某個面板。

乙個會話可以包含多個視窗,我們可以用會話來組織視窗,會話相當於乙個工作環境,比如我們可以建立乙個work的會話,裡面放我們平時開發需要的視窗,tmux缺省會建立乙個會話,我們也可以通過引數建立指定名稱的會話,例如

$ tmux new-session -s work

在控制台中輸入這條命令就可以建立乙個名為work的會話並進入它,我們也可以同時指定這個會話中第乙個視窗的名字,比如mysql:

$ tmux new-session -s work -n mysql

關於會話有兩個非常重要的操作,即attach和detach,attach就是讓某個會話到前台來執行,而detach則是將某個會話放到後台。通常,當我們開啟tmux時,tmux在建立乙個會話的同時也會attach到這個會話,所以我們會立即看到tmux的視窗。在某個會話中,我們按c-b d會detach這個會話,也就會回到原先的終端控制台,但實際上並沒有退出這個會話,比如你可以通過在終端中輸入下列命令重新attach到work會話:

tmux attach -t work

乙個時刻可能存在多個會話,在tmux外面通過下列命令可以列出當前有哪些會話:

tmux ls

在tmux裡面可以按下ctrl+b s來列出會話,然後可以選擇乙個切換過去。

在我們建立會話的同時也可以加上-d選項以表示不自動attach到這個新會話:

tmux new-session -s work -d

這樣的話你會通過tmux ls看到新建立的work會話,並可以通過tmux attach -t workattach到該會話中。

在控制台上可以通過下列命令關閉會話work:

tmux kill-session -t work

上面的一些以tmux打頭的命令都是tmux提供的外部介面,是在命令列中供我們直接執行的,事實上,除了對會話的操作之外,在外部也可以直接建立視窗,例如:

tmux new-window -n project -t work

這條命令可以針對work會話建立乙個名為project的視窗。

在建立會話和視窗時甚至可以指定要執行的命令:

tmux new-session -s work -n dev -d "ssh [email protected]"

以上命令會在建立work會話後,在其第乙個視窗的控制台中執行ssh命令以遠端連線到伺服器中。

建立視窗時也與此類似,可將命令寫在最後。

更為強大的是,tmux可以讓你向某個會話[:視窗:面板]傳送任意按鍵:

tmux send-keys -t work:editor 'emacs' c-m

上述命令能夠向work會話的editor視窗傳送emacs加回車,即在這個視窗中開啟emacs編輯器。

有了tmux的各種強大的外部命令,我們就可以自定義指令碼,自動化很多事情:

tmux new-session -s work -n mysql -d 'mysql'

tmux new-window -n editor -t work

tmux send-keys -t work:editor 'emacs' c-m

將上述命令寫在乙個shell指令碼裡,就可以一鍵完成下述功能:建立乙個名為work的會話,第乙個視窗命名為mysql,並在其中執行mysql命令進入mysql,第二個視窗名為editor,並在其中開啟emacs。

tmux最吸引我的功能是永不斷線

tmux實際上是server/client模式,當建立第乙個會話時,server就會執行,以後的會話都以attach/detach的方式被server服務,當所有會話都退出時,server才會退出。在我們工作中,經常是ssh連線到伺服器上去寫**,但由於網路的不穩定性,會偶爾發生ssh連線中斷的情況,這樣我們之前的會話就會丟失,如果是乙個nohup的後台任務還好,只要我們重新連上去之後,還是可以找到的(但至少需要回到事發現場,比如重新cd到原來的資料夾等),而如果我們正在寫**,還沒來得及儲存,很可能就杯具了(除非某些編輯器剛好把你最新的**自動儲存過)。tmux不會存在這個問題,不信,你可以在終端中開啟tmux,然後關閉這個終端,再開啟乙個新的終端,輸入tmux ls看看,你會發現之前的會話仍然還在,你需要做的只是attach它就行!那麼我們平常在ssh連線到伺服器上後,再通過tmux去開啟我們的工作會話,不管你在裡面幹什麼,都不用擔心斷線,因為tmux server會幫你儲存你的會話,你隨時可以attach它,而且你的工作現場一直在那,連目錄都不用切換,除非你真的kill掉它。

tmux常用快捷鍵

ctrl+b ? 列出所有快捷鍵;按q返回。

ctrl+b d 脫離當前會話;這樣可以暫時返回shell介面,輸入tmux attach能夠重新進入之前的會話

ctrl+b d 選擇要脫離的會話;在同時開啟了多個會話時使用

ctrl+b ctrl+z 掛起當前會話 

ctrl+b r 強制重繪未脫離的會話 

ctrl+b s 選擇並切換會話;在同時開啟了多個會話時使用

ctrl+b : 進入命令列模式;此時可以輸入支援的命令,例如kill-server可以關閉伺服器。

ctrl+b [ 進入複製模式;此時的操作與vi/emacs相同,按q/esc退出

ctrl+b ~ 列出提示資訊快取;其中包含了之前tmux返回的各種提示資訊

ctrl+b fn+pageup/pagedown  內容多了可以翻頁,退出翻頁用q

ctrl+b t 顯示時鐘。

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 順時針旋轉當前視窗的面板

mac 安裝tmux

$ sudo brew install libevent 

$ sudo brew install tmux

如果安裝libevent 提示libevent-2.0.21_1 already installed, it's just not linked 應該是之前安裝沒完成,使用brew uninstall libevent 解除安裝重灌

tmux 使用筆記

set option g mouse on run shell tmux plugins tmux continuum continuum.tmux set g continuum restore on 檢視所有會話 prefix s 切換面板 prefix o 更改 session 名稱 tmux...

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...