你的鼠標(biāo)正在拖慢你的速度。
鼠標(biāo)的發(fā)明為我們與計(jì)算機(jī)的交互創(chuàng)造了一種新的方式。我們可以單擊、雙擊、三連擊,甚至還能猛擊某個(gè)應(yīng)用。鼠標(biāo)和圖形交互界面的產(chǎn)生,使得使用計(jì)算機(jī)對(duì)普通用戶來(lái)說(shuō)變得更加容易。但是對(duì)于程序員來(lái)說(shuō),鼠標(biāo)有很大的負(fù)面影響。
編譯、構(gòu)造軟件時(shí),我們會(huì)使用多個(gè)程序一起工作。比如一個(gè) web 開(kāi)發(fā)者可能會(huì)同時(shí)運(yùn)行一個(gè)數(shù)據(jù)庫(kù)控制臺(tái),一個(gè) web 服務(wù)端和一個(gè)文本編輯器。用鼠標(biāo)在這些窗口之間來(lái)回切換不僅會(huì)浪費(fèi)寶貴的時(shí)間還會(huì)打斷你的思路。這看起來(lái)似乎沒(méi)什么,但是你的手需要從鍵盤(pán)移開(kāi),再放到鼠標(biāo)上,然后定位,最后再完成鼠標(biāo)操作,這個(gè)過(guò)程非常容易讓人分心。
使用 tmux,你可以創(chuàng)造一個(gè)如圖1(使用 tmux 作為開(kāi)發(fā)環(huán)境)所示的工作環(huán)境。使用 tmux 的窗口,你可以非常輕松地在一個(gè)非常簡(jiǎn)單的環(huán)境中管理文本編輯器、數(shù)據(jù)庫(kù)控制臺(tái)、本地 web 服務(wù)器。你還可以把 tmux 窗口分割為多個(gè)區(qū)域,讓多個(gè)程序并排顯示或運(yùn)行。這意味著你可以在一個(gè)窗口里讓文本瀏覽器,irc 聊天客戶端,或自動(dòng)化測(cè)試與你的主編輯器同時(shí)顯示、運(yùn)行。
最棒的是,你僅僅通過(guò)鍵盤(pán)快捷鍵就可以非??焖俚卦谶@些窗口和面板之間互相移動(dòng),這樣會(huì)極大地提高你的注意力和生產(chǎn)效率。
在這本書(shū)中,你可以學(xué)到如何配置、使用并自定義 tmux。你會(huì)學(xué)習(xí)到如何同時(shí)管理多個(gè)程序,編寫(xiě)腳本來(lái)創(chuàng)建自定義的環(huán)境,還能學(xué)會(huì)如何使用 tmux 與其他人遠(yuǎn)程工作。使用 tmux,你可以創(chuàng)建一個(gè)幾乎純鍵盤(pán)操作的工作環(huán)境。
圖1 - 使用 tmux 作為開(kāi)發(fā)環(huán)境
tmux 是一個(gè)終端復(fù)用器(terminal multiplexer)。它讓我們可以使用單一環(huán)境就可以登錄多個(gè)終端或窗口,每個(gè)終端或窗口都運(yùn)行著獨(dú)立的進(jìn)程或程序。例如,我們可以打開(kāi) tmux 然后運(yùn)行 Vim 編輯器。然后可以新建一個(gè)窗口運(yùn)行一個(gè)數(shù)據(jù)庫(kù)控制臺(tái),然后在這些程序之間來(lái)回切換,這一切都是在一個(gè)會(huì)話(session)中進(jìn)行的。
如果你使用了一個(gè)現(xiàn)代操作系統(tǒng)并且終端有標(biāo)簽頁(yè)功能的話,這聽(tīng)起來(lái)并不新鮮。但是同時(shí)運(yùn)行多個(gè)程序只是 tmux 的特性之一。我們可以將窗口(window)劃分為水平或垂直面板(pane),也就是說(shuō)可以在同一個(gè)屏幕上并排顯示或運(yùn)行兩個(gè)或多個(gè)程序。這些操作都不使用鼠標(biāo)。
我們還能從一個(gè)會(huì)話中分離出來(lái),讓整個(gè)工作環(huán)境都在后臺(tái)運(yùn)行。如果你以前用過(guò) GNU-Screen,那你對(duì)這個(gè)特性一定感到很熟悉。tmux 與 GNU-Screen 有許多的相似之處,但是 tmux 的功能更多,而且 tmux 的配置更容易。由于 tmux 使用了 client-server 模型,因此可以在一個(gè)中央位置控制窗口和面板,甚至可以從一個(gè)終端窗口就實(shí)現(xiàn)多個(gè)會(huì)話之間的切換。這個(gè) client-server 模型還可以讓我們創(chuàng)建 tmux 腳本并與其他窗口或應(yīng)用程序交互。
在本書(shū)中,我們會(huì)探討以上所有這些特性等等。
本書(shū)的目標(biāo)是幫助 Mac 或 Linux 程序員在使用終端時(shí)更加得心應(yīng)手。
如果你是一個(gè)軟件開(kāi)發(fā)人員,你會(huì)看到如何使用 tmux 構(gòu)建一個(gè)開(kāi)發(fā)環(huán)境,通過(guò)它你可以輕而易舉地同時(shí)使用多個(gè)終端會(huì)話工作。并且如果你已經(jīng)能非常熟練地使用 Vim 或 Emacs,你會(huì)看到 tmux 是如何進(jìn)一步提高你的工作效率。
如果你是一個(gè)系統(tǒng)管理員或偶爾與遠(yuǎn)程服務(wù)器打交道的開(kāi)發(fā)人員,你可能會(huì)對(duì)如何利用 tmux 持久地監(jiān)測(cè)服務(wù)器狀態(tài)感興趣。
本書(shū)將會(huì)向你展示如何把 tmux 融入到你的工作中,包括 tmux 的基本特性以及如何在每天的工作場(chǎng)景中應(yīng)用這些特性。
在第 1 章,基礎(chǔ)知識(shí)。你會(huì)學(xué)到關(guān)于 tmux 的基本特性,包括創(chuàng)建會(huì)話,面板,窗口以及學(xué)習(xí)如何執(zhí)行基本的操作。
在第 2 章,配置 tmux。你會(huì)學(xué)習(xí)到如何重定義許多 tmux 默認(rèn)的快捷鍵和外觀配置。
在第 3 章,腳本定制 tmux 環(huán)境。你會(huì)學(xué)習(xí)到如何編寫(xiě)你自己的開(kāi)發(fā)環(huán)境腳本,包括使用命令行界面,配置文件和 tmuxinator 工具。
之后,在第 4 章,處理文本和緩沖區(qū)。你會(huì)學(xué)習(xí)到如何通過(guò)鍵盤(pán)快捷鍵在緩沖區(qū)之間移動(dòng)文本,如何選中并復(fù)制文本,以及如何工作于多個(gè)粘貼緩沖區(qū)。
接下來(lái),在第 5 章,使用 tmux 結(jié)對(duì)編程。你會(huì)學(xué)習(xí)到如何配置 tmux,使你和同事可以在不同的計(jì)算機(jī)上使用 tmux 基于同一份代碼一起工作。
最后,在第 6 章,工作流。本章涵蓋了更多管理窗口、面板和會(huì)話,并向你展示如何使用 tmux 更進(jìn)一步地高效工作。
要使用 tmux,你需要有一臺(tái)運(yùn)行 Mac OS X 或 UNIX/Linux 操作系統(tǒng)的計(jì)算機(jī)。
不幸的是,tmux 不支持 Windows 系統(tǒng),但 tmux 在 Linux 系統(tǒng)的虛擬機(jī)、VPS 或共享主機(jī)環(huán)境中依然可以良好運(yùn)行。
盡管不是必須的,使用文本編輯器例如 Vim 或 Emacs 的經(jīng)驗(yàn)將會(huì)對(duì)學(xué)習(xí)使用 tmux 非常有幫助。tmux 的工作機(jī)制和它們類似,而且 tmux 有一些預(yù)定義的鍵盤(pán)快捷鍵會(huì)讓使用過(guò)這些編輯器的讀者們感到熟悉。
tmux 是一個(gè)由鍵盤(pán)驅(qū)動(dòng)的工具。你會(huì)在本書(shū)中遇到大量的鍵盤(pán)快捷鍵。由于 tmux 提供了大小寫(xiě)敏感的鍵盤(pán)快捷鍵,因此你可能會(huì)對(duì)本書(shū)中提到的快捷鍵感到理解不是很清晰。
為了盡可能地簡(jiǎn)潔,下面是本書(shū)中所使用的一些約定。
CTRL- b
表示“同時(shí)按下 CTRL
鍵和 b
鍵”。CTRL- R
表示“同時(shí)按下 CTRL
鍵和 R
鍵(大寫(xiě) R,你可能需要同時(shí)按下 SHIFT
鍵和 r
鍵,我不會(huì)在這些按鍵中特別說(shuō)明需要按下 SHIFT
鍵)”。CTRL- b d
表示“同時(shí)按下 CONTROL
鍵和 b
鍵,然后松開(kāi)它們,然后再按下 d
鍵”。在第 1 章,基礎(chǔ)知識(shí),你會(huì)學(xué)習(xí)關(guān)于命令前綴(command prefix),使用命令前綴,CTRL- b d
可以表示為 PREFIX d
。$ tmux new-session
美元符號(hào)只是終端會(huì)話的提示符,在終端輸入命令時(shí)并不需要輸入這個(gè)符號(hào)。
本書(shū)的網(wǎng)站是一個(gè)交互式的論壇,同時(shí)你也可以在上面反饋本書(shū)的錯(cuò)誤之處。網(wǎng)站上有本書(shū)中所建立的配置文件和腳本文件,你可以在網(wǎng)站上直接下載這些源代碼。
使用 tmux 讓我工作效率大增,我也很高興能和大家分享我得經(jīng)驗(yàn)。讓我們開(kāi)始吧,我們先來(lái)安裝 tmux,了解它的基本特性。
更多建議: