在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