why

tmux 是一个优秀的终端复用软件,类似 GNU Screen

通过一个终端登录远程主机并运行 tmux 后,在其中可以开启多个控制台

并且支持 session

相关概念

有如下几个概念。

  • session. session 是一个特定的终端组合。输入 tmux 就可以打开一个新的 session。
  • window。window 为 session 中的终端。
  • pane 。pane 为一个 window 分隔出来的各个间隔,

常用命令

记得加前缀 ctrl+b

session 操作

  • tmux ls 列出所有 session。
  • s 选择 session
  • ctrl-b d, 退出当前 session。输入tmux attach [-t sessionname]重新进入该 session。例如tmux attach -t 1即可切换到名字为 1 的 session。
  • $ 重命名当前 session
  • 挂起当前 session

window 操作

ctrl+b是前提操作

  • c 创建一个新的 window
  • , 重命名当前 window (切换后名字会消失 why?zsh 造成的?)
  • & 关闭当前 window
  • n 移动到下一个窗口
  • p 移动到前一个窗口
  • l 切换到上一个窗口
  • w 列出所有窗口编号,并进行选择切换
  • 编号 移动到指定编号的窗口。
  • . 修改窗口编号,相当于排序。
  • f 搜索所有的窗口。非常方便的功能。如图

pane 操作

  • " 横向分割
  • % 纵向分割
  • 方向键 在 pane 直接移动
  • o 到下一个 pane
  • Ctrl+方向键 以 1 个单元格为单位移动边缘以调整当前面板大小
  • Alt+方向键 以 5 个单元格为单位移动边缘以调整当前面板大小
  • { / }左右 pane 交换
  • 空格 横竖切换
  • q 显示 pane 的编号
  • x 关闭当前 pane

pane 聚焦当前窗口

  • 开多个 pane,一个页面多任务 (记得加前缀)
    • Ctrl+o:顺时针旋转当前窗口的面板
    • z tmux 1.8 新特性,最大化当前所在面板

配置

~/.tmux

翻页

  • [ 之后按翻页键就行,mac 下是 fn+方向键

典型用例

1
2
3
:::text
tmux new -s wwj # 创建命名session
tmux attach -t wwj #登录

结对编程

1
2
3
4
:::text
#需要使用同个用户操作,可以建立tmux用户
tmux new-session -s insight #创建一个组会话,名为insight
tmux new-session -t insight -s wwj #新建会话wwj到insight组

tmux+vim

Tmux 最经典的使用场景便是用 Tmux+Vim 来做一个 IDE

参考资料