[翻譯]使用tmux打造極簡開發(fā)環(huán)境

原文地址:https://blog.bugsnag.com/benefits-of-using-tmux/

在我使用tmux之前我經(jīng)常聽別人提起它。當(dāng)時網(wǎng)上并沒有太多關(guān)于tmux的信息,所以雖然這個工具聽起來很酷,但我并不知道它將如何給我的工作帶來神奇的改變?,F(xiàn)在我使用tmux已經(jīng)有幾年了,并依靠他將我的各個開發(fā)工作結(jié)合在一起。多虧了他,我的工作流程現(xiàn)在有條理,自動化,并且可定制。我希望通過說幾個tmux如何幫助我的具體例子,來讓幫助大家理解他如何讓我們玩轉(zhuǎn)工作。

這篇文章將會默認(rèn)讀者熟悉tmux的術(shù)語,例如session,pane和window。tmux的window功能很想終端的tab,session則是一些相關(guān)window的集合,每個window則可以被水平或者豎直地分為多個pane。每個pane都是相互獨立的終端,執(zhí)行你的dotfiles,管理獨立的環(huán)境變量以及其他。想了解更多相關(guān)介紹,這篇文章可以讓你更快入門。

少丟東西

我們都有過這樣的經(jīng)歷,不小心點到鍵盤或者鼠標(biāo)把當(dāng)前的終端窗口關(guān)掉了,里面的開發(fā)服務(wù),文本編輯器,ssh會話和打印信息什么的都隨之而去。
最好的情況是,關(guān)掉的終端只是一個鏡像的復(fù)制,最差的情況則是這個終端是一些列場景切換而來的,你必須要一步一步重新回到剛才的環(huán)境。
在使用tmux時你可以在不丟失session的任何狀態(tài)下離開他。這意味著如果你突然關(guān)閉了你的終端他也并不會丟失狀態(tài),你只需要尋行tmux并重新連接剛才的session就可以回到之前的工作環(huán)境。


這雖然不是什么神級的便利,但是他在這幾年中幫我節(jié)省了很多時間。如果你的開發(fā)工作中嚴(yán)重依賴終端,那么這個功能就已經(jīng)足夠吸引你來嘗試tmux了。

自動開發(fā)環(huán)境創(chuàng)建

在我使用tmux之前,每次當(dāng)我需要一個本地的開發(fā)環(huán)境時我都需要重復(fù)下列步驟:

  • 打開終端
  • cd到指定目錄
  • 打開文本編輯器
  • 開始輸入
  • 開始構(gòu)建或者編譯
  • 開啟其他一些服務(wù)
  • 準(zhǔn)備寫入日志文件
    現(xiàn)在想起來,我在這些步驟上重復(fù)了太多次。是用tmux則可以讓我自動創(chuàng)建一個自定義的終端開發(fā)環(huán)境。tmux的session是可以完全腳本化的,這意味著你可以創(chuàng)建自己的腳本來定制如何打開終端到指定的狀態(tài)來開始你的工程。
    現(xiàn)在開始任意一個工程的開發(fā)對來說都只需要一行命令。如果你同時在多個工程工作,并且需要來回切換的話,這非常游泳。
    下列圖片將會展示使用一行tmuxp命令來啟動整個rails的開發(fā)環(huán)境:編輯器,調(diào)試命令行喲你與運行g(shù)it命令和測試,一個本地運行的web服務(wù)以及一個REPL。

小結(jié)上面提到的快速啟動開發(fā)環(huán)境便利:

  • 減少環(huán)境切換的開銷
  • 開發(fā)流程更加有組織
  • 減少整理窗口和標(biāo)簽的時間

定位終端標(biāo)簽的分布

腳本化各個工程的開發(fā)環(huán)境的最大好處是加強(qiáng)了組織。終端是我工作的核心部分,從文本編輯到運行測試,從git到ssh,各種事情都需要在終端上進(jìn)行。雖然我總是會在一開始知道什么進(jìn)程跑在哪個終端,但是每次環(huán)境切換,運行一次性的任務(wù),都會使我的終端環(huán)境變得更加散亂。久而久之,就會發(fā)現(xiàn)我那成堆增長的標(biāo)簽和窗口。那么問題來了:
“哪個才是ssh登錄的窗口?”
“那5個‘bash’窗口哪個才是我剛才執(zhí)行命令的?”

編碼習(xí)慣

讓我們重新整理一下思路。再次感謝tmux提供的腳本功能,讓我可以快速自動化進(jìn)入開發(fā)環(huán)境。如果我發(fā)現(xiàn)我的窗口管理有些失控了(比如我開了很多一次性任務(wù)的窗口),我可以關(guān)掉整個tmux的session,然后重啟一個新的。
如何使用tmux來保持窗口的秩序井然這完全取決于使用者。我傾向與每個工程都使用獨立的session。對于每個我正在開發(fā)的工程,我都編寫了對應(yīng)的啟動腳本,并都以下列形式組織每個session:

  • 第一個window:編輯器(左邊的pane),shell(右邊的腳本,用于執(zhí)行測試和git命令)
  • 第二個window: 服務(wù)端進(jìn)程
  • 第三個window:其他進(jìn)程和任務(wù)
  • 其他window:另外一些需要執(zhí)行的工作。

減少自動化的成本

養(yǎng)成將tmux的session編寫成腳本的習(xí)慣是tmux的精髓。自動化是個好東西,但是需要保證新增一個工程時不需要花太多力氣來配置新的腳本。我們的目標(biāo)是讓新建一個session腳本和手動開啟一個新session一樣簡單。
如果你愿意的話,可以用tmux命令來寫一個shell腳本,這樣你就不用手動調(diào)用tmux的new-session,send-keys,new-window等等。需要快速了解tmux的腳本編寫方法的話,我建議讀這本《tmux: Productive Mouse-Free Development》書。另外,我強(qiáng)烈建議使用上手類似與tmuxinatortmuxp這樣的工具,他們可以瞬間簡化tmux的session管理方法,讓編寫工作環(huán)境啟動的腳本迅速成為你的習(xí)慣。

更少的環(huán)境切換開銷

使用tmux來管理所有工程的開發(fā)環(huán)境,這意味著進(jìn)入開發(fā)環(huán)境只需要一行命令,甚至在整個系統(tǒng)重啟之后也可以一鍵返回。
如果你像我一樣總是在不同的代碼環(huán)境之間切換,tmux的<prefix>命令就會非常游泳。他可以讓你建立很多session,并且快速在session之間切換并且不需要使用鼠標(biāo)。幾個按鍵就能讓你切換到另一個不同的代碼環(huán)境。

最后幾點

本文提到的tmux優(yōu)點僅僅是入門級的。你越是以來終端來開發(fā),就越會發(fā)現(xiàn)tmux這樣的工具非常有用。不論你是否決定嘗試tmux,你都應(yīng)該想一想我們剛才所討論的是否是一種優(yōu)化,這將有助于你工作流程的提升。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容