[翻译]使用tmux打造极简开发环境

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

在我使用tmux之前我经常听别人提起它。当时网上并没有太多关于tmux的信息,所以虽然这个工具听起来很酷,但我并不知道它将如何给我的工作带来神奇的改变。现在我使用tmux已经有几年了,并依靠他将我的各个开发工作结合在一起。多亏了他,我的工作流程现在有条理,自动化,并且可定制。我希望通过说几个tmux如何帮助我的具体例子,来让帮助大家理解他如何让我们玩转工作。

这篇文章将会默认读者熟悉tmux的术语,例如session,pane和window。tmux的window功能很想终端的tab,session则是一些相关window的集合,每个window则可以被水平或者竖直地分为多个pane。每个pane都是相互独立的终端,执行你的dotfiles,管理独立的环境变量以及其他。想了解更多相关介绍,这篇文章可以让你更快入门。

少丢东西

我们都有过这样的经历,不小心点到键盘或者鼠标把当前的终端窗口关掉了,里面的开发服务,文本编辑器,ssh会话和打印信息什么的都随之而去。
最好的情况是,关掉的终端只是一个镜像的复制,最差的情况则是这个终端是一些列场景切换而来的,你必须要一步一步重新回到刚才的环境。
在使用tmux时你可以在不丢失session的任何状态下离开他。这意味着如果你突然关闭了你的终端他也并不会丢失状态,你只需要寻行tmux并重新连接刚才的session就可以回到之前的工作环境。


这虽然不是什么神级的便利,但是他在这几年中帮我节省了很多时间。如果你的开发工作中严重依赖终端,那么这个功能就已经足够吸引你来尝试tmux了。

自动开发环境创建

在我使用tmux之前,每次当我需要一个本地的开发环境时我都需要重复下列步骤:

  • 打开终端
  • cd到指定目录
  • 打开文本编辑器
  • 开始输入
  • 开始构建或者编译
  • 开启其他一些服务
  • 准备写入日志文件
    现在想起来,我在这些步骤上重复了太多次。是用tmux则可以让我自动创建一个自定义的终端开发环境。tmux的session是可以完全脚本化的,这意味着你可以创建自己的脚本来定制如何打开终端到指定的状态来开始你的工程。
    现在开始任意一个工程的开发对来说都只需要一行命令。如果你同时在多个工程工作,并且需要来回切换的话,这非常游泳。
    下列图片将会展示使用一行tmuxp命令来启动整个rails的开发环境:编辑器,调试命令行哟你与运行git命令和测试,一个本地运行的web服务以及一个REPL。

小结上面提到的快速启动开发环境便利:

  • 减少环境切换的开销
  • 开发流程更加有组织
  • 减少整理窗口和标签的时间

定位终端标签的分布

脚本化各个工程的开发环境的最大好处是加强了组织。终端是我工作的核心部分,从文本编辑到运行测试,从git到ssh,各种事情都需要在终端上进行。虽然我总是会在一开始知道什么进程跑在哪个终端,但是每次环境切换,运行一次性的任务,都会使我的终端环境变得更加散乱。久而久之,就会发现我那成堆增长的标签和窗口。那么问题来了:
“哪个才是ssh登录的窗口?”
“那5个‘bash’窗口哪个才是我刚才执行命令的?”

编码习惯

让我们重新整理一下思路。再次感谢tmux提供的脚本功能,让我可以快速自动化进入开发环境。如果我发现我的窗口管理有些失控了(比如我开了很多一次性任务的窗口),我可以关掉整个tmux的session,然后重启一个新的。
如何使用tmux来保持窗口的秩序井然这完全取决于使用者。我倾向与每个工程都使用独立的session。对于每个我正在开发的工程,我都编写了对应的启动脚本,并都以下列形式组织每个session:

  • 第一个window:编辑器(左边的pane),shell(右边的脚本,用于执行测试和git命令)
  • 第二个window: 服务端进程
  • 第三个window:其他进程和任务
  • 其他window:另外一些需要执行的工作。

减少自动化的成本

养成将tmux的session编写成脚本的习惯是tmux的精髓。自动化是个好东西,但是需要保证新增一个工程时不需要花太多力气来配置新的脚本。我们的目标是让新建一个session脚本和手动开启一个新session一样简单。
如果你愿意的话,可以用tmux命令来写一个shell脚本,这样你就不用手动调用tmux的new-session,send-keys,new-window等等。需要快速了解tmux的脚本编写方法的话,我建议读这本《tmux: Productive Mouse-Free Development》书。另外,我强烈建议使用上手类似与tmuxinatortmuxp这样的工具,他们可以瞬间简化tmux的session管理方法,让编写工作环境启动的脚本迅速成为你的习惯。

更少的环境切换开销

使用tmux来管理所有工程的开发环境,这意味着进入开发环境只需要一行命令,甚至在整个系统重启之后也可以一键返回。
如果你像我一样总是在不同的代码环境之间切换,tmux的<prefix>命令就会非常游泳。他可以让你建立很多session,并且快速在session之间切换并且不需要使用鼠标。几个按键就能让你切换到另一个不同的代码环境。

最后几点

本文提到的tmux优点仅仅是入门级的。你越是以来终端来开发,就越会发现tmux这样的工具非常有用。不论你是否决定尝试tmux,你都应该想一想我们刚才所讨论的是否是一种优化,这将有助于你工作流程的提升。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容