強大的tmux

本文首發(fā)于我的個人博客:Suixin's Blog
原文: https://suixinblog.cn/2018/12/tmux.html  作者: Suixin

之前在服務(wù)器跑代碼的時候用到了screen會話管理命令,可以新建不同的session來不間斷運行shell。而tmux更為強大,不僅提供了會話的管理,還支持同一窗口下分出不同的窗格。
總的來說,tmux的結(jié)構(gòu)分為:

  • session
    • window
      • pane

命令行安裝

macos使用brew install tmux進行安裝;
CentOS使用yum install tmux進行安裝時發(fā)現(xiàn)版本為1.8較低,所以通過源碼編譯的方式進行安裝:

  1. 安裝依賴:

    yum -y install ncurses-devel
    yum -y install libevent-devel
    
  2. 安裝tmux

    git 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
    
  3. 檢查版本

    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

image

其他

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

image

查找窗口、調(diào)整窗口排序、調(diào)整窗格尺寸、同步窗格、文本復制模式等功能在參考中可以找到。

參考

https://gist.github.com/ryerh/14b7c24dfd623ef8edc7
https://github.com/gpakosz/.tmux
https://harttle.land/2015/11/06/tmux-startup.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容