Boo's Blog

Stay foolish, Stay hungry

本来之前就知道有 tmux 这样一个窗口分隔工具,只不过一直使用着iTerm2,本身就自带有标签页功能,所以就一直没去学习这个工具。

这段时间需要经常访问Linux服务器,所以在服务器上安装了这个工具。

安装

Mac:

1
brew install tmux

Linux:

1
apt-get install tmux

一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用(注:⌃ 为 Mac 的 control 键),以下是常用的窗格(pane)快捷键列表。

会话

第一次使用tmux 可能会被Session窗口窗格 这些陌生的概念,弄得摸不着头脑。

这里总结成一句话就是:
一个完整的会话(Session)是由数个窗口组成,而一个窗口又可以分成若各个窗格。

使用tmux 命令会默认新建一个tmux 会话:

1
2
// 默认新建一个Session 名称为 0 的窗口。
tmux

常用Session操作:

  • $ 重命名当前会话
  • s 选择会话列表
  • d 退出当前会话(不是删除),运行后将会退出 tmux 进程,返回至 shell 主进程。

窗口

窗口的概念不同于窗格,窗口互不影响,窗格相互分隔。

常用窗口操作:

  • c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
  • p 切换至上一窗口
  • n 切换至下一窗口
  • w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择
  • & 关闭当前窗口
  • , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
  • 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
  • f 根据窗口名搜索选择窗口,可模糊匹配

窗格

窗格是在窗口下的概念,若干个窗格组成一个窗口。

常用窗格操作:

  • % 左右平分出两个窗格
  • “ 上下平分出两个窗格
  • x 关闭当前窗格
  • { 当前窗格前移
  • } 当前窗格后移
  • ; 选择上次使用的窗格
  • o 选择下一个窗格,也可以使用上下左右方向键来选择
  • space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换
  • z 最大化当前窗格,再次执行可恢复原来大小
  • q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格

其他命令

上面那些命令都是配合⌃ + b快捷键使用的,下面的这些命令都是在Shell进程中直接执行的。

新建名称为 foo 的会话

1
tmux new -s foo

列出所有 tmux 会话

1
tmux ls

恢复上一次会话

1
tmux a

恢复名为 foo 的会话

1
tmux a -t foo

删除名为 foo 的会话

1
tmux kill -session -t foo

删除所有会话

1
tmux kill -server

tmux or iterm2

tmuxiTerm2 都有窗口管理方面的功能,只是前者相比后者的优势在于:

  • iTerm2 的窗格切换快捷键(⌘⌥→)容易与其他软件全局快捷键冲突(例如 Spectacle 的窗口分割快捷键),tmux 由于存在前缀快捷键,所以不存在快捷键冲突问题;
  • tmux 可以在终端软件重启后通过命令行恢复上次的 session ,而终端软件则不行;
  • tmux 简洁优雅、订制性强,学会之后也能在 Linux 上使用,有助于逼格提升。

参考链接

评论