1. 程式人生 > >linux開發神器--Tmux

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