终端复用利器 Tmux

Posted1 by 呼延十 on January 17, 2019 Hot:

介绍

tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理。

我主要用它来解决以下问题:

  1. ctrl+tab来回切换多个terminal太累了.
  2. 我需要一边操作数据库,一边执行程序,一边看CPU占用率. 三个需要同时展示的时候,使用原生的终端太费劲了.

基本概念

tmux有几个基本概念,当然你不了解也行,工具嘛,会用就行.

  1. 会话(session):相当于对窗口进行一个分组的概念,每次主动连接tmux,会新建一个会话,当然你可以选择性的新建或者关闭.这个我使用的不多,我主要在一个会话中操作.
  2. 窗口(window):一个会话中可以有多个窗口,每个窗口都是一个独立的终端,并且你可以使用快捷键快速的进行切换.
  3. 窗格(pane):一个窗口可以分割为多个窗口,可以水平分割和垂直分割.同时进行多个任务的时候有用.

常用命令

一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用(注:⌃ 为 Mac 的 control 键.

下面是常用的命令记录:

会话操作

  • $ 重命名当前会话

  • s 选择会话列表

  • d detach 当前会话,运行后将会退出 tmux 进程,返回至 shell 主进程

在shell主线程里(非tmux会话中)可以使用下列命令来操作会话.

tmux new -s foo # 新建名称为 foo 的会话
tmux ls # 列出所有 tmux 会话
tmux a # 恢复至上一次的会话
tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
tmux kill-session -t foo # 删除名称为 foo 的会话
tmux kill-server # 删除所有的会话

窗口操作

  • c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态

  • p 切换至上一窗口

  • n 切换至下一窗口

  • w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择

  • & 关闭当前窗口

  • , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id

  • 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口

  • f 根据窗口名搜索选择窗口,可模糊匹配

窗格操作

  • % 左右平分出两个窗格

  • ” 上下平分出两个窗格

  • x 关闭当前窗格

  • { 当前窗格前移

  • } 当前窗格后移

  • ; 选择上次使用的窗格

  • o 选择下一个窗格,也可以使用上下左右方向键来选择

  • space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换

  • z 最大化当前窗格,再次执行可恢复原来大小

  • q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格

效果图

配置问题

使用iterm2加tmux的时候,你会发现在tmux窗口里面无法使用鼠标滚动窗口内容,具体表现为奇奇怪怪的各种样子.

我搜过好多次了,这次侥幸成功了,记录一下.

在主目录下创建tmux配置文件,vim ~/.tmux.conf,并写入set -g mouse on.

之后重新加载tmux,tmux source-file ~/.tmux.conf.并重新进入tmux.

然后会发现在iterm中无法选中复制了…..

打开配置,勾选下图中的选项.

2019-04-20-10-03-08

OK,done.

tmux的窗口滚动是个玄学.

这样子只可以用鼠标来拖拽选中,在很多时候我们想要双击选中, 这时候可以按住alt+鼠标双击就可以了.

完.

参考文章

不过个人建议,不要做过多的配置,很多东西用原生的会更好,免去换电脑的操作,而且原生的习惯了,会更加顺畅一些. 超级详细的Tmux文章





ChangeLog

2019-01-17 完成
2019-04-20 添加tmux窗口滚动配置

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十