tmux的使用方法和個性化配置

介紹

tmux是一個優秀的終端複用軟件,即便非正常掉線,也能保證當前的任務運行,這一點對於遠程SSH訪問特別有用,網絡很差的狀況下仍然能保證工做現場不丟失!此外,tmux徹底使用鍵盤控制窗口,實現窗口的切換功能。html

簡單地說,tmux對於我主要有兩個功能(這應該也是tmux的主要功能):git

  1. split窗口。能夠在一個terminal下打開多個終端,也能夠對當前屏幕進行各類split,便可以 同時打開多個顯示範圍更小的終端。github

  2. 在 使用SSH的環境下,避免網絡不穩定,致使工做現場的丟失。想象如下場景, 你在執行一條命令的過程當中,因爲網絡不穩定,SSH鏈接斷開了。這個時候,你就不知道以前 的那條命令是否執行成功。若是此時你打開了不少文件,進入了較深層次的目錄,因爲網絡 不穩定,SSH鏈接斷開。從新鏈接之後,你又不得不從新打開那些文件,進入那個深層次的 目錄。若是使用了tmux,從新鏈接之後,就能夠直接回到原來的工做環境,不但提升了工做 效率,還下降了風險,增長了安全性。vim

安裝

sudo apt-get install tmux

安裝完成後輸入命令tmux便可打開軟件,界面十分簡單,相似一個下方帶有狀態欄的終端控制檯;不出意外,這時候你會跟我第一次同樣,以爲tmux沒什麼牛逼的。安全

會話,窗口,面板

根據tmux的定義,在開啓了tmux服務器後,會首先建立一個會話,而這個會話則會首先建立一個窗口,其中僅包含一個面板;也就是說,這裏看到的所謂終端控制檯應該稱做tmux的一個面板,雖然其使用方法與終端控制檯徹底相同。服務器

tmux使用C/S模型構建,主要包括如下單元模塊:網絡

  • server服務器。輸入tmux命令時就開啓了一個服務器。session

  • session會話。一個服務器能夠包含多個會話svn

  • window窗口。一個會話能夠包含多個窗口。佈局

  • pane面板。一個窗口能夠包含多個面板。

經常使用按鍵

這裏須要說明一點的是,tmux的任何指令,都包含一個前綴,也就是說,你按了前綴(一組按鍵,默認是Ctrl+b)之後,系統才知道你接下來的指令是發送給tmux的。

  • C-b ? 顯示快捷鍵幫助

  • C-b C-o 調換窗口位置,相似與vim 裏的C-w

  • C-b 空格鍵 採用下一個內置佈局

  • C-b ! 把當前窗口變爲新窗口

  • C-b " 模向分隔窗口

  • C-b % 縱向分隔窗口

  • C-b q 顯示分隔窗口的編號

  • C-b o 跳到下一個分隔窗口

  • C-b 上下鍵 上一個及下一個分隔窗口

  • C-b C-方向鍵 調整分隔窗口大小

  • C-b c 建立新窗口

  • C-b 0~9 選擇幾號窗口

  • C-b c 建立新窗口

  • C-b n 選擇下一個窗口

  • C-b l 切換到最後使用的窗口

  • C-b p 選擇前一個窗口

  • C-b w 以菜單方式顯示及選擇窗口

  • C-b t 顯示時鐘

  • C-b ; 切換到最後一個使用的面板

  • C-b x 關閉面板

  • C-b & 關閉窗口

  • C-b s 以菜單方式顯示和選擇會話

  • C-b d 退出tumx,並保存當前會話,這時,tmux仍在後臺運行,能夠經過tmux attach進入 到指定的會話

配置

咱們先來看一下幾個配置,這些配置纔是我離不開tmux的緣由:-)。tmux的配置文件是~/.tmux.conf,這個文件可能不存在,你能夠本身新建。下面開始配置,首先,有沒有以爲tmux的前綴按起來太不方便了,ctrl與b鍵隔得太遠,不少人把它映射成C+a,也就是在配置文件(~/.tmux.conf)中加入下面這條語句:

#設置前綴爲Ctrl + aset -g prefix C-a

與此同時,取消默認的前綴按鍵:

#解除Ctrl+b 與前綴的對應關係unbind C-b

配置完之後,重啓tmux起效,或者先按C+b,而後輸入,進入命令行模式,在命令行模式下輸入:

source-file ~/.tmux.conf

你也能夠跟我同樣,在配置文件中加入下面這句話,之後改了只須要按前綴+r了。

#將r 設置爲加載配置文件,並顯示"reloaded!"信息bind r source-file ~/.tmux.conf \; display "Reloaded!"

關於前綴,不少人都喜歡改爲Ctrl+a,不過我我的更喜歡Ctrl+x,若是你是vim用戶,你必定懂的。還有就是面板的切換很不方便,須要先按前綴,再按方向鍵,還記得vim裏面怎麼切換各個面板的嗎?tmux也能夠,由於它支持映射。把前綴映射改爲Ctrl+x,再加入以下幾條語句,如今切換窗口就和vim一摸同樣了,頓時以爲親切了不少。

#upbind-key k select-pane -U#downbind-key j select-pane -D#leftbind-key h select-pane -L#rightbind-key l select-pane -R

上面的最後一條語句會更改C-x l的功能,我挺喜歡這個功能的,由於咱們很時候都是在兩個窗口或這兩個面板中切換,因此我又加入以下語句

#select last windowbind-key C-l select-window -l

如今個人l鍵可不能隨便按了,Ctrl+x l是切換面板,Ctrl+x Ctrl+l切換窗口,Ctrl+l清屏。

複製模式copy-mode

  • 前綴 [ 進入複製模式

  • 按 space 開始複製,移動光標選擇複製區域

  • 按 Enter 複製並退出copy-mode。

  • 將光標移動到指定位置,按 PREIFX ] 粘貼

若是把tmux比做vim的話,那麼咱們大部分時間都是處於編輯模式,咱們複製的時候可不能夠像vim同樣移動呢?只須要在配置文件(~/.tmux.conf)中加入以下行便可。

#copy-mode 將快捷鍵設置爲vi 模式setw -g mode-keys vi

會話

  • C-x s 以菜單的方式查看並選擇會話

  • C-x :new-session 新建一個會話

  • C-x d 退出並保存會話

  • 終端運行 tmux attach 返回會話

命名會話

tmux new -s session
tmux new -s session -d #在後臺創建會話tmux ls #列出會話tmux attach -t session #進入某個會話

使當前pane 最大化

從我用vim開始,就相信這世界上有些人比你本身還了解你本身想要什麼,因此喬老爺子才能作出讓世人尖叫的產品,因此我常常瀏覽高手的.vimrc 文件,我用了tmux不到3天就發現,它怎麼不能最大化當前pane?就像vim裏的ZommWinPlugin.vim插件同樣,你按下某鍵,當前窗口 就最大化了,得到最大可視界面。當目前爲止,就尚未發現我有需求而別人沒有的,一樣,已有前人找到的解決辦法,方法以下:

# zoom pane <-> window#http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/examples/tmux-zoom.shbind ^z run "tmux-zoom"##

滾屏

滾屏要進入copy-mode,即前綴+[,而後就能夠用上下鍵來滾動屏幕,配置了vi快捷鍵模式,就能夠像操做vi同樣來滾動屏幕,很是的方便。退出直接按‘q’鍵便可。

關於配置文件

能夠到個人github倉庫中clone,其中有相關的使用說明

https://github.com/SBaof/dot-tmux

同時我也是參考其餘人的配置文件

http://www.cnblogs.com/scue/p/3705309.html

相關文章
相關標籤/搜索