前言
你经常可能会遇到这样的情况:你在vim编辑你在远程服务器上面的代码,然后你要新开一个窗口再次ssh到
这个远程服务器来测试运行你的代码。此外,如果你的WIFI断线了,你的所有session都会挂掉,GG。
然后你又要麻烦地重新开两个session。
其实,上述问题都可以用tmux解决,一个可以提供如下功能的命令行工具:
- 在一个terminal window内开启多个windows,panes。
- 在一个session内(这个session会一直保持着,即使断网的时候也会保持着)保持windows和panes。
- 能够共享session(这功能对结对编程来说真是太妙了!),就是说,你在session上做得所有操作,
在另一台电脑上连接到同一个session,会看到同样的输入和输出。
正文
安装
Ubuntu用户只需要执行sudo apt-get install tmux
Mac 用户只需要执行brew install tmux
安装完后,执行如下:
这看起来和普通的终端差不多,除了底下有条绿色的状态bar。在这个bar上,我们可以运行tmux命令去控制管理终端windows和sessions
Tmux基本命令:
当你进入到tmux后,你可以通过先运行一个prefix key来执行各种命令。默认来说,tmux的prefix key是 ctrl + b。也就是说在执行
其他任何命令之前你都要先同时按下ctrl + b。
tmux的命令有很多很多,但首先我们了解下基本的就好了,如下:
如果你把在tmux session的所有的window都kill后,它将会kill整个session并且回到普通的终端上。
如果你用
要查看所有的tmux sessions,你可以使用:
要attach到最后一个使用的session,你可以用:
要attach到指定的某个session,你可以用:
这里补充说明下 session 和 window之间的关系,我们看看这个图,
一个window相当于你的显示器能看到的所有东西,然后一个window上可以分成一块块的拼图,也就是各个panes:
这就这么一些。现在你可以通过多个终端window和永久的sessions来在你的远程电脑上工作了。
你甚至可以通过让两个人attach到同一个session来进行结对编程!
下一步
上面的命令对掌握tmux真的非常有用。通常,我尽量少开窗口,一般是一个window用于vim,另一个window做开发,第3个窗口去运行命令。
大多数人倾向于用panes来在同一个屏幕上展现多个内容。
Panes是个特别炫酷的东西而且很值得学习,但是推荐你们先放一放,不要急着学习太多panes的东西,因为它会增加你的tmux学习曲线。
当你用panes时候,你要记住水平和垂直创建panes的命令,还有切换不同panes的命令,还有改变panes大小,关闭panes的命令,等等等等。
所以我建议先把其它的玩熟练再去用panes这些花哨的东西。
你也可以通过在home目录下添加.tmux.conf
文件来指定tmux的一些配置。
比如通常可以在里面改变 prefix的快捷键(很多人会使用ctrl+a 作为prefix)。
初始window数设置为1,而不是0;然后还可以设置下颜色。
如果你打算重新绑定prefix,很有可能这将会为你以后形成肌肉记忆了,哈哈。
下面是一个精简版的.tmux.conf, 只改变了window数和 prefix:
tmux有非常多的可选配置,但是你得由浅到深,刚开始尽可能精简。当你想尝试一些更高级的功能时,不要在网上复制粘贴。
你必须清楚.tmux.conf
的每一个配置的作用是什么。
一旦你感觉你掌握了基础,将会有很多好玩的高级tmux游戏等着你。