如今前端開發可不容易啊,先打開個VIM,而後再打開個lite-server,一不當心寫個ES2015還要打開個gulp來作預編譯,若是能把這麼多個窗口放在一個工做臺上那就行了。咦,tmux不就專幹這事的嗎?html
安裝sudo apt install tmux
前端
服務端(Server), 1個服務端維護1~N個會話;
會話(Session), 1個會話對應1~N個窗口;
窗口(Window), 1個窗口對應1~N個窗格;
窗格(Pane),vim、bash等具體任務就是在窗格中執行。git
1.進入tmux
在shell中執行tmux
就會自動建立一個匿名會話、窗口和窗格,而窗格內正在運行着另外一個shell程序,這時咱們能夠像日常使用shell同樣來工做。而tmux真正的威力在於對會話、窗口和窗格的管理,但在此以前咱們要先了解開啓魔法的閥門——快捷鍵前綴(prefix)。github
2.快捷鍵前綴(prefix)
tmux爲使自身的快捷鍵和其餘軟件的快捷鍵互不干擾,特地提供一個快捷鍵前綴,默認爲Ctrl
+b
。所以當咱們輸入任何tmux快捷鍵前必須先輸入Ctrl
+b
。
因爲快捷鍵前綴是能夠重置的,所以後文將以<prefix>
來指代快捷鍵前綴。shell
3.操做Pane
建立(經過分割當前pane實現)
<prefix>
"
,水平分割當前pane
<prefix>
%
,垂直分割當前pane
關閉
<prefix>
x
,刪除當前pane
跳轉
<prefix>
<up-arrow>
/<down-arrow>
/<left-arrow>
/<right-arrow>
, 經過上下左右方向鍵跳轉到對應的pane
<prefix>
;
,跳轉到上次激活的pane
<prefix>
o
,跳轉到下一個pane
<prefix>
q
,顯示各pane的編號,並輸入編號跳轉到對應的pane
修改尺寸
<prefix>
+alt
+<up-arrow>
/<down-arrow>
/<left-arrow>
/<right-arrow>
, 經過上下左右方向修改當前pane的高寬
縮放
<prefix>
z
,縮放當前pane
其餘
<prefix>
{
,將當前pane移動到最左邊
<prefix>
}
,將當前pane移動到最右邊
<prefix>
!
,將當前pane轉變成windowgulp
4.操做Windoiw
建立
<prefix>
c
,建立window
重命名
<prefix>
,
,重命名當前window
注意:因爲tmux默認會根據當前pane執行的程序來改變window名稱,所以須要在~/.tmux.conf
中加入set-option -g allow-rename off
來固化window名稱。
關閉
<prefix>
&
,關閉當前window
跳轉
<prefix>
n
,跳轉到下一個window
<prefix>
p
,跳轉到上一個window
<prefix>
0
...9
,跳轉到對應的window
其餘
<prefix>
:swap-window -s 2 -t 1
, 調轉編號爲2和1的兩個window的次序
5.操做Session
<prefix>
s
,顯示全部會話
<prefix>
$
,重命名
<prefix>
d
,脫離當前會話
<prefix>
:kill-session
,關閉當前會話
<prefix>
(
,跳轉到上一個會話
<prefix>
)
,跳轉到下一個會話vim
1.細摳Session操做
咱們爲前端開發環境和後端開發環境分別建立兩個Session來獨立管理,那麼咱們就能夠靈活地在兩個Session間穿梭,而且能夠分別和前端、後端開發人員協同工做,下面咱們看看相關的命令吧。
$ tmux
或 <prefix>
:new
, 建立匿名Session
$ tmux new -s mysession
或 <prefix>
:new -s mysession
, 建立名爲mysession的Session
$ tmux kill-session -t mysession
,關閉mysession會話
$ tmux kill-session -a
,關閉全部會話
$ tmux ls
,顯示全部會話信息
$ tmux a
,附加到最近一個會話
$ tmux a -t mysession
,附加到會話mysessionwindows
2.多個panes輸入同步
<prefix>
+ :setw synchronize-panes
這個功能在經過ssh維護多臺服務器時十分有用!後端
3.複製粘貼
經過tmux咱們能夠經過純鍵盤操做實現跨pane的複製粘貼。首先在~/.tmux.conf
文件中添加setw -g mode-keys vi
,啓用vi鍵盤方式(hjkl
方向鍵,/?nN
搜索)操做buffer內容。
進入複製模式,<prefix>
[
開始選擇,<Spacebar>
選擇結束並將內容複製到新的buffer,<Enter>
取消選擇,<Esc>
從buffer_0粘貼到光標位置,<prefix>
]
可見覆制的內容均暫存在buffer中,而tmux也提供直接操做buffer的命令給咱們.
<prefix>
: show-buffer
,顯示buffer_0的內容
<prefix>
: capture-pane
, 保存當前pane的內容
<prefix>
: list-buffers
, 顯示全部buffer內容
<prefix>
: choose-buffer
, 選擇buffer並粘貼
<prefix>
: save-buffer buf.txt
, 保存buffer內容到but.txt
<prefix>
: delete-buffer -b 1
, 刪除buffer_1的內容bash
4.美化狀態欄
默認的tmux樣式有點醜,而https://github.com/gpakosz/.tmux這個配置則爲咱們提供漂亮狀態欄.
tmux爲咱們內置了5種佈局類型
even-horizontal
,從左至右平均分佈全部pane
even-vertical
,從上至下平均分佈全部pane
main-horizontal
,最上方的pane爲主工做區,其他pane位於最下方且從左至右排列
main-vertical
,最左邊的pane爲主工做區,其他pane位於最右邊且從上至下排列
tiled
,從上至下,從左至右平均分佈全部pane
對於main-horizontal和main-vertical佈局而言,咱們還能夠設置主工做區的尺寸
# .tmux.conf set-window-option -g main-pane-width 100 set-window-option -g main-pane-height 100
其實更多的時候,咱們工做區的佈局遠比內置的複雜。以下左上角爲編輯區,右上角爲UnitTest回顯,最下面是REPL。
這時咱們就要先調整好window內全部pane的尺寸,而後脫離當前session,獲取當前window的佈局信息了。
tmux list-windows
將最後一個]
前的內容複製到tmuxinator的yml配置中的layout那,注意pane數量要和layout的佈局信息數據一致。
尊重原創,轉載請註明來自:http://www.cnblogs.com/fsjohnhuang/p/6057050.html ^_^肥仔John