本文首發(fā)于我的個人博客:Suixin's Blog
原文: https://suixinblog.cn/2018/12/tmux.html 作者: Suixin
之前在服務(wù)器跑代碼的時候用到了screen會話管理命令,可以新建不同的session來不間斷運行shell。而tmux更為強大,不僅提供了會話的管理,還支持同一窗口下分出不同的窗格。
總的來說,tmux的結(jié)構(gòu)分為:
- session
- window
- pane
- window
命令行安裝
macos使用brew install tmux進行安裝;
CentOS使用yum install tmux進行安裝時發(fā)現(xiàn)版本為1.8較低,所以通過源碼編譯的方式進行安裝:
-
安裝依賴:
yum -y install ncurses-devel yum -y install libevent-devel -
安裝
tmuxgit clone https://github.com/tmux/tmux.git cd tmux sh autogen.sh # 若提示找不到aclocal命令,則安裝yum install -y automake ./configure && make # 若提示沒有C編譯器,則安裝yum install -y gcc make install -
檢查版本
tmux -V # 可能提示無tmux命令,制作軟連接即可 ln -s /usr/local/bin/tmux /usr/bin/tmux
常用參數(shù)
tmux new -s <name>:新建名為name的會話(無-s參數(shù)則默認以數(shù)字命名);
tmux at -t <name>:恢復(attach) 名為name的會話(無-t參數(shù)則默認恢復上一次的會話(at可簡寫為a);
tmux ls:列出所有會話;
tmux kill-session -t <name>:關(guān)閉名為name的會話;
tmux kill-server:關(guān)閉所有會話。
快捷鍵(在tmux session中)
這里所有的快捷鍵都是以Ctrl+B開頭的(Mac也是?+B而不是?+B)。以下所有命令均在按下前綴Ctrl+B后再按下生效。
會話
D:分離(detach) 當前會話(會話仍在后臺運行);
S:列出所有會話,此時可通過方向鍵和回車鍵切換;
$:重命名當前會話;
:new -s <name>:創(chuàng)建并進入名為name的會話(不存在父子級關(guān)系)。
窗口(標簽頁)
窗口在tmux中相當于同一個session下的子窗口。
想到的使用場景為:在一個多人使用的服務(wù)器下,你只需新建自己名字的sessiontmux new -s suixin,想要再新建會話時,不去tmux new -s suixin2,而是選擇在已有的suixinsession下新建窗口,避免了多用戶用tmux開啟巨多session的困擾。(說的有點繞……)
c:新建窗口;
w:列出所有窗口,此時可通過方向鍵和回車鍵切換;
n:切換到后一個窗口(使用后面的主題后失效);
p:切換到前一個窗口(使用后面的主題后失效);
,:重命名當前窗口(不知是否可以在創(chuàng)建時就命名);
&:關(guān)閉當前窗口。
窗格(分割窗口)
窗格為tmux優(yōu)于screen的一個強大的功能,可以實現(xiàn)在同一個窗口下分割窗口為多個窗格運行不同的命令,一覽無余。棒棒棒?。?br>
%:垂直分割;
::水平分割;
x:關(guān)閉窗格(也可以直接在命令行輸入exit);
o:交換窗格(將輸入切換到下一個窗格);
q:顯示窗格的編號(和尺寸),此時可通過按下數(shù)字切換(使用后面的主題后數(shù)字切換失效);
{:與上一個窗格交換位置;
}:與下一個窗格交換位置。
一個漂亮的tmux配置
有人配置了一個比較全的tmux,見https://github.com/gpakosz/.tmux 。
新特性:
- 鼠標(開啟鍵為
Ctrl+A+M)??汕袚Qwindows、panes,鼠標滾動,復制等; - 快捷鍵前綴改為
Ctrl+A并兼容Ctrl+B; - 更改了部分快捷鍵,使之更方便,見 https://github.com/gpakosz/.tmux#bindings ;
- 美化底欄;
- 窗口編號從1開始;
- 當前窗口用藍底顯示,當前pane用藍框顯示;
- 漂亮的界面。
拉取文件:
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local ./
我修改了~/.tmux.conf.local文件中的左右底欄配置,然后source該文件(好像Linux服務(wù)器不能顯示電池信息):
tmux_conf_theme_status_left=' ? #S '
tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{loadavg} | #{username}#{root} | #{hostname} '
我比較常用的窗格設(shè)置,左邊主界面,右上角可以實時cd到某些文件夾查看,右下角為top:

其他
Ctrl+B+T:顯示時間,按任意鍵返回。

查找窗口、調(diào)整窗口排序、調(diào)整窗格尺寸、同步窗格、文本復制模式等功能在參考中可以找到。
參考
https://gist.github.com/ryerh/14b7c24dfd623ef8edc7
https://github.com/gpakosz/.tmux
https://harttle.land/2015/11/06/tmux-startup.html