天天看點

linux下的終端利器----tmux1 tmux 簡介2 tmux的優勢3 tmux安裝4 tmux使用詳解6 tmux配置

參考

http://os.51cto.com/art/201410/453671.htm

tmux簡單教程

大家也可以使用byobu(增強版的screen)

博文更新日志

2020/10/06 [1] 感謝 crawling_snail, 幫忙修正一處筆誤.

1

tmux

簡介

我想大家之前都聽說過

terminator

,這個多終端管理器,之前我也一直使用的這個,但是使用起來感覺有點醜陋,而且使用起來非常不友善。但是這個

tmux

卻可以使你排抛棄鍵盤滑鼠[1],完全使用鍵盤操作。

tmux

是指通過一個終端登入遠端主機并運作後,在其中可以開啟多個控制台的終端複用軟體。類似GNU Screen,但來自于OpenBSD,采用BSD授權。使用它最直覺的好處就是,通過一個終端登入遠端主機并運作tmux後,在其中可以開啟多個控制台而無需再“浪費”多餘的終端來連接配接這台遠端主機;當然其功能遠不止于此。

Tmux("Terminal Multiplexer"的簡稱)

可以讓我們在單個螢幕的靈活布局下開出很多終端,我們就可以協作地使用它們。舉個例子,在一個面闆中,我們用Vim修改一些配置檔案,在另一個面闆,我們使用irssi聊天,而在其餘的面闆,可以跟蹤一些日志。然後,我們還可以打開新的視窗來更新系統,再開一個新視窗來進行伺服器的ssh連接配接。在這些視窗面闆間浏覽切換和建立它們一樣簡單。它的高度可配置和可定制的,讓其成為你心中的延伸

我們可以借助

Tmux

建構出複雜的開發環境,同時還可以在一旁進行

SSH

遠端連接配接。可以開出很多視窗,将其拆分成很多面闆,接管和分離會話等等

linux下的終端利器----tmux1 tmux 簡介2 tmux的優勢3 tmux安裝4 tmux使用詳解6 tmux配置

2 tmux的優勢

*  提供了強勁的、易于使用的指令行界面。
*  可橫向和縱向分割視窗。
*  窗格可以自由移動和調整大小,或直接利用四個預設布局之一。
*  支援 UTF-8 編碼及 256 色終端。
*  可在多個緩沖區進行複制和粘貼。
*  可通過互動式菜單來選擇視窗、會話及用戶端。
*  支援跨視窗搜尋。
*  支援自動及手動鎖定視窗。
           

3 tmux安裝

sudo apt-get install tmux
           

4 tmux使用詳解

安裝完成後輸入指令tmux即可打開軟體,界面十分簡單,類似一個下方帶有狀态欄的終端控制台;

但根據tmux的定義,在開啟了tmux伺服器後,會首先建立一個會話,而這個會話則會首先建立一個視窗,其中僅包含一個面闆;

也就是說,這裡看到的所謂終端控制台應該稱作tmux的一個面闆,雖然其使用方法與終端控制台完全相同。

tmux使用C/S模型建構,主要包括以下單元子產品:

子產品 名稱 描述
server 伺服器 輸入tmux指令時就開啟了一個伺服器
session 會話 一個伺服器可以包含多個會話
window 視窗 一個會話可以包含多個視窗
panel 面闆 一個視窗可以包含多個面闆

4.1 session會話

使用

Tmux

的最好方式是使用會話的方式,這樣你就可以以你想要的方式,将任務和應用組織到不同的會話中。如果你想改變一個會話,會話裡面的任何工作都無須停止或者殺掉。讓我們來看看這是怎麼工作的。

讓我們開始一個叫做"session"的會話,并且運作top指令

tmux new -s new session
top
           

4.2 tmux指令

類似各種平鋪式視窗管理器,tmux使用鍵盤操作,常用快捷鍵包括:

我們在終端中輸入

Ctrl+b

,則激活控制台;此時以下按鍵生效,然後輸入一下指令即可進行操作。

4.3 系統操作指令

指令 描述
列出所有快捷鍵;按q傳回
d 脫離目前會話;這樣可以暫時傳回Shell界面,輸入tmux attach能夠重新進入之前的會話
D 選擇要脫離的會話;在同時開啟了多個會話時使用
Ctrl+z 挂起目前會話
r 強制重繪未脫離的會話
s 選擇并切換會話;在同時開啟了多個會話時使用
: 進入指令行模式;此時可以輸入支援的指令,例如kill-server可以關閉伺服器
[ 進入複制模式;此時的操作與vi/emacs相同,按q/Esc退出
~ 列出提示資訊緩存;其中包含了之前tmux傳回的各種提示資訊

4.4 視窗操作

指令 描述
c 建立新視窗
& 關閉目前視窗
數字鍵 切換至指定視窗
p 切換至上一視窗
n 切換至下一視窗
l 在前後兩個視窗間互相切換
w 通過視窗清單切換視窗
, 重命名目前視窗;這樣便于識别
. 修改目前視窗編号;相當于視窗重新排序
f 在所有視窗中查找指定文本

4.5 面闆操作

指令 描述
" 将目前面闆平分為上下兩塊
% 将目前面闆平分為左右兩塊
x 關閉目前面闆
! 将目前面闆置于新視窗;即建立一個視窗,其中僅包含目前面闆
Ctrl+方向鍵 以1個單元格為機關移動邊緣以調整目前面闆大小
Alt+方向鍵 以5個單元格為機關移動邊緣以調整目前面闆大小
Space 在預置的面闆布局中循環切換;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q 顯示面闆編号
o 在目前視窗中選擇下一面闆
方向鍵 移動光标以選擇面闆
{ 向前置換目前面闆
} 向後置換目前面闆
Alt+o 逆時針旋轉目前視窗的面闆
Ctrl+o 順時針旋轉目前視窗的面闆

6 tmux配置

tmux

的系統級配置檔案為

/etc/tmux.conf

,使用者級配置檔案為

~/.tmux.conf

。配置檔案實際上就是

tmux

的指令集合,也就是說每行配置均可在進入指令行模式後輸入生效。

下面是一個

~/.tmux.conf

的示例,其中包括了一些常用的配置:

#此類配置可以在指令行模式中輸入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
set-option -g prefix C-aunbind-key C-bbind-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
           

下面是我的配置檔案資訊

# author: Gatieme
# time:	2015年 10月 21日 星期三 11:13:54 CST
# Usage: mv tmux_conf.txt ~/.tmux.conf
#------------------------------------------

#-- base --#
set -g default-terminal "screen"
set -g display-time 3000
set -g history-limit 65535
#----------------------------------------------

#将預設按鍵字首改為與C-i避免與終端快捷鍵沖突--已取消
#set-option -g prefix C-i
#unbind-key C-b
#bind-key C-i send-prefix
#----------------------------------------------

#按鍵綁定


#水準或垂直分割視窗 (C+A+ :split-window + v/h)
# 預設的使用"上下分割和%左右分割實在有點不好記憶
unbind '"'
bind - splitw -v #分割成上下兩個視窗
unbind %
bind | splitw -h #分割成左右兩個視窗
#----------------------------------------------

#選擇分割的窗格
bind k selectp -U #選擇上窗格
bind j selectp -D #選擇下窗格
bind h selectp -L #選擇左窗格
bind l selectp -R #選擇右窗格
#----------------------------------------------

#重新調整窗格的大小
bind ^k resizep -U 10
bind ^j resizep -D 10
bind ^h resizep -L 10
bind ^l resizep -R 10
#----------------------------------------------

#交換兩個窗格
bind ^u swapp -U
bind ^d swapp -D

bind ^a last
bind q killp
#----------------------------------------------

bind '~' splitw htop
bind ! splitw ncmpcpp
bind m command-prompt "splitw -h 'exec man %%'"

unbind s
#----------------------------------------------

#定制狀态行

set -g status-left "#[fg=white,bg=blue] > #I < #[default] |" # 0:bash
#set -g status-left "#[fg=white,bg=blue] > #I < #[default] |" # session-name
set -g status-right "#[fg=yellow,bright][ #[fg=cyan]#W #[fg=yellow]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green]%H:%M #[default]"
set -g status-right-attr bright

set -g status-bg black
set -g status-fg white
set -g set-clipboard on

setw -g window-status-current-attr bright
#setw -g window-status-current-bg red
setw -g window-status-current-bg green
setw -g window-status-current-fg white

set -g status-utf8 on
set -g status-interval 1

#set -g visual-activity on
#setw -g monitor-activity on

set -g status-keys vi
#----------------------------------------------

setw -g mode-keys vi
setw -g mode-mouse on

#setw -g mouse-resize-pane on
#setw -g mouse-select-pane on
#setw -g mouse-select-window on

# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o -sel clipbaord)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux show-buffer | xclip -i -sel clipbaord"

#預設啟動應用
# 你可以根據自己的需求自己定制啟動應用
#new -s work # 建立名為 work 的會話,并啟動 mutt
#neww rtorrent # 啟動 rtorrent
#neww vim # 啟動 vim
#neww zsh
#selectw -t 3 # 預設選擇标号為 3 的視窗
           

此外,像Tmuxinator 或者 Tmuxifier這樣的工具,可以簡化Tmux會話,視窗和面闆的建立及加載,你可以很容易就配置Tmux。如果你沒有使用過這些,嘗試一下吧!

網上發現的比較好的一些配置資訊

https://github.com/xuxiaodong/tmuxen

https://linuxtoy.org/archives/scripting-tmux.html

自動化啟動tmux的腳本

繼續閱讀