linux開發神器--Tmux
在Linux上工作的朋友,可能會常常遇到這種情況:
痛點1: 在公司用putty連著Linux開發機,程式正跑著,不知不覺到了下班的時候,要和老婆/女朋友約會了,但是程式還沒跑完,並且進度有點緊,還得把工作帶回家,怎麼辦?
如果斷開網路,putty就會斷,無法看到程式跑的怎麼樣了。
痛點2: 在Linux上用Vim寫著程式碼,想除錯一下。要麼儲存程式碼-->退出-->編譯。要麼再開一個Terminal視窗,除錯的時候要兩個視窗來回切,好麻煩!
此時就需要神器Tmux。
Tmux是什麼呢?
Tmux 是一個工具,用於在一個終端視窗中執行多個終端會話。不僅如此,你還可以通過 Tmux 使終端會話運行於後臺或是按需接入、斷開會話,這個功能非常實用。
如何安裝Tmux?
在Ubuntu上安裝Tmux很簡單,只需要執行命令:
sudo apt-get install tmux
即可。
如何使用Tmux?
網上關於Tmux的教程其實有很多,我只把實際工作中最實用的部分列出來。
先列一個Tmux最重要的快捷鍵:"ctrl+b"。
Tmux為了使其快捷鍵不與Vim以及作業系統等的快捷鍵衝突,設定了一個“快捷鍵字首”的概念。也就是說,當我們使用Tmux任何快捷鍵的時候,都必須先按"ctrl+b"。
針對使用過程,首先明確一下Tmux裡的幾個概念:會話、視窗、窗格。
我們不去拗口的講這三個概念是什麼意思,直接實際操作起來,讓你理解。
使用Tmux,必須首先建立會話。建立方法:
tmux new -s 你指定的會話名
建立成功後,會進入你建立的會話。
針對痛點1:
如果這時候我們正跑著程式碼,需要斷網了。此時只需要按快捷鍵"ctrl+b",然後再按一下"d"。也就是"ctrl+b"和"d"的組合,就從這個會話中退出了。
但是退出並不意味著結束,當我們回到家,重新用putty連上Linux,仍然可以回到這個"會話"(也就是這個工作狀態)當中來。
通過命令"tmux ls",我們能夠看到目前系統中有哪些會話。
而命令"tmux a -t 你要進入的會話名",就可以實現回到"會話"的功能。
你會發現,上次斷網之前的工作狀態被好好的儲存著,可以繼續工作啦。
針對痛點2:
我們回到會話中。想再寫程式碼的同時除錯怎麼辦?
Tmux可以實現視窗分屏功能:
快捷鍵:"ctrl + b" 和 "%"
你會發現,視窗被分成了兩個窗格。這樣就可以邊寫程式碼,邊除錯,而不用開兩個terminal了!
痛點2的延伸:
你學會了Tmux的分屏功能,用著很爽,邊寫程式碼,邊除錯。這個時候老大來了,給你一個新任務:寫個小指令碼。
因為你正邊寫邊除錯程式碼,分屏功能用著很爽,肯定不會關掉這個分屏的terminal。只好新開一個terminal咯?
不用這麼麻煩!新開一個視窗即可!
快捷鍵:"ctrl + b "和"c"。
你會發現,新開了一個視窗,之前分屏的視窗隱藏了。在terminal最下方,顯示著視窗的編號。此時你蹭蹭蹭把小指令碼寫完了,如何返回之前的視窗呢?
快捷鍵:"ctrl + b "和"你要返回的視窗編號"。
如下圖所示。
Tmux和Vim的衝突問題:快捷鍵和配色。
你進入Tmux後,發現在Tmux裡使用Vim,之前設定的外掛的快捷鍵不能用了,配色都變了。不要慌,下面是解決方案。
快捷鍵:
開啟PuTTY設定介面,在Terminal –> Keyboard下,將The Function keys and keypad從預設選項“ESC[n~”更改為“Xterm R6”,記得儲存設定,之後功能鍵就可用了。
如下圖所示。
配色:
兩個解決方法
1、一種解決方法是,export出TERM環境變數為xterm-256color。(同時需要上面快捷鍵的操作,即把預設選項“ESC[n~”更改為“Xterm R6”)直接執行下列程式碼:
echo 'export TERM=xterm-256color' >> ~/.bashrc
source ~/.bashrc
2、另一種解決方法是使用-2引數啟動tmux,強制tmux認為終端支援256 colours:
echo 'alias tmux="tmux -2"' >> ~/.bashrc
source ~/.bashrc
對於其他功能和快捷鍵,大家就可以自己去探索了,下面是快捷鍵參考:
按下 Ctrl-b
後的快捷鍵如下:
基礎
?
獲取幫助資訊
會話管理
s
列出所有會話$
重新命名當前的會話d
斷開當前的會話
視窗管理
c
建立一個新視窗,
重新命名當前視窗w
列出所有視窗%
水平分割視窗"
豎直分割視窗n
選擇下一個視窗p
選擇上一個視窗0~9
選擇0~9對應的視窗
窗格管理
%
建立一個水平窗格"
建立一個豎直窗格h
將游標移入左側的窗格*j
將游標移入下方的窗格*l
將游標移入右側的窗格*k
將游標移入上方的窗格*q
顯示窗格的編號o
在窗格間切換}
與下一個窗格交換位置{
與上一個窗格交換位置!
在新視窗中顯示當前窗格x
關閉當前窗格
其他
t
在當前窗格顯示時間
參考連結:
1、Tmux 入門介紹
http://blog.jobbole.com/87278/
2、Tmux 速成教程:技巧和調整
http://blog.jobbole.com/87584/
3、解決tmux在PuTTY下工作異常的問題
http://www.tuicool.com/articles/2eeYBz