Featured image of post Mac: tmux 最佳实践

Mac: tmux 最佳实践

 

tmux 是一个终端多路复用器:它允许从单个屏幕创建、访问和控制多个终端。 tmux 可能会与屏幕分离并继续在后台运行,然后重新连接。

第一次看到tmux 的介绍的时候,我其实没什么感觉,觉得没什么.后面用terminal多了,遇到了一些问题,尝试解决,然后我重新认真学习tmux。它改变了我电脑的习惯。
本文将会花十分钟介绍,tmux 的基本使用场景

什么是 terminal session

回忆一下,你日常工作时候使用terminal 的场景,打开一个 Iterm2  窗口,然后使用ssh 连接一台远程机器,然后进入特定目录,开始工作,完成工作后,关闭Iterm2 窗口。上面这些步骤,就是一个 terminal session 它的生命周期是跟 terminal 的生命周期绑定在一起的,关闭窗口后session就结束,然后下次我们要工作的时候,就重复上面的步骤。
有什么办法,可以将session跟terminal 开来,下次再操作的时候,就不需要重复上面的步骤? tmux可以帮助我们实现这个功能。

This article was first published in the Medium MPP plan. If you are a Medium user, please follow me on Medium. Thank you very much.

我们看看再 tmux 下如何实现上面这个功能把。
ITerm2
在这个演示中,我首先用tmux new -s test 创建了一个tmux session ,然后登录我的一台开发机器,然后再将session 剥离,回到Iterm2 终端,最后我又使用 tmux attach-session 回到原来的开发机器,跟刚才退出去的时候一模一样。 这就是 tmux 基础的应用了,剥离session,并且保持session 状态。

TL;DR

tmux 可以帮助我们实现:

  1. 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
  2. 它可以让新窗口"接入"已经存在的会话。
  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  4. 它还支持窗口任意的垂直和水平拆分。

tmux 基本用法

安装 tmux

在Mac上,可以使用brew 来安装 tmux

1
brew install  tmux

其他环境请参考:Installing tmux

启动tmux 与退出 tmux

安装完成后, 在 terminal中输入 tmux 就可以启动一个 tmux session 。输入exit 就会退出 tmux session ,返回到原来的 terminal 页面。
ITerm2 2

前缀键

跟其他软件不一样的是: tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用(注: 为 Mac 的 control 键),这样其实挺好的,减少了与其他软件冲突的概率。可以通过 ⌃b+? 来查询所有的快捷键。一般把tmux 的快捷键分成三类:窗口管理、窗格管理、以及session 管理。

session 管理

如果运行了多次 tmux 命令则会开启多个 tmux 会话(session)。在 tmux 会话中,使用前缀快捷键 ⌃b 配合以下快捷键可操作会话:

  • ⌃b + $ 重命名当前会话
  • ⌃b + s 选择会话列表
  • ⌃b + d detach 当前会话,运行后将会退出 tmux 进程,返回至 terminal 主页面。
    在 terminal 中,可以这样操作 session
  • tmux new -s foo # 新建名称为 foo 的会话
  • tmux ls # 列出所有 tmux 会话
  • tmux a # 恢复至上一次的会话
  • tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
  • tmux kill-session -t foo # 删除名称为 foo 的会话
  • tmux kill-server # 删除所有的会话
    配合 alias 会得到更好的体验,比如我自己的配置
1
2
3
4
5
alias tnew='tmux new -s' # 新建一个会话
alias tls='tmux ls'
alias td='tmux detach' # 分离 会话,会保存分离之前的状态
alias ta='tmux attach -t' # 连接会话
alias tkss='tmux kill-session -t'

窗格管理

Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。

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

窗口管理

tmux 还有窗口(window) 的概念,当窗格变得拥挤的时候,我们可以再开一个窗口,下面是窗口一些常用的快捷键。

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

总结

这篇文章只是总结了一下tmux 的基本使用以及快捷键,还有很多应用场景没有涉及。比如跟vim 配合如何更加高效的在 vim中写代码。希望看过这篇文章的朋友,能够上手体验一下tmux, 使用tmux 生产力。

Licensed under CC BY-NC-SA 4.0
最后更新于 Aug 15, 2024 18:17 CST
使用 Hugo 构建
主题 StackJimmy 设计