> ## Content Index
> Fetch the complete content index at: https://huizhou92.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Mac: tmux 最佳实践
- URL: https://huizhou92.com/mac-tmux-zui-jia-shi-jian/
- Published: 2024-08-15T10:56:30.000Z
- Updated: 2026-09-06T11:40:54.000Z
- Description: Mac: tmux 最佳实践. tmux 是一个终端多路复用器：它允许从单个屏幕创建、访问和控制多个终端。 tmux 可能会与屏幕分离并继续在后台运行，然后重新连接。 第一次看到 tmux 的介绍的时候，我其实没什么感觉,觉得没什么.后面用terminal多了，遇到了一些问题，然后尝试解决，最后我重新认真学习。
- Author: huizhou92
- Tags: tech, tools, tmux, #lang-zh-cn

> 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](https://medium.huizhou92.com/?ref=huizhou92.com). Thank you very much.

我们看看再 tmux 下如何实现上面这个功能把。  
![](https://images.hxzhouh.com/blog-images/2025/03/42459132e0aaa93c6b70676e370f5683.gif)  
![ITerm2](https://images.hxzhouh.com/blog-images/2024/08/0f9d1eb1580f31c8fc1e195f32f20f08.gif)  
在这个演示中，我首先用`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

```shell
brew install  tmux

```

其他环境请参考:[Installing tmux](https://github.com/tmux/tmux/wiki/Installing?ref=huizhou92.com)

### 启动tmux 与退出 Tmux

安装完成后， 在 terminal中输入 `tmux` 就可以启动一个 tmux session 。输入exit 就会退出 tmux session ，返回到原来的 terminal 页面。  
![ITerm2 2](https://images.hxzhouh.com/blog-images/2024/08/b1e9646b21500848496831da3f724e75.gif)

### 前缀键

跟其他软件不一样的是: 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 lsls # 列出所有 tmux 会话
- tmux a # 恢复至上一次的会话
- tmux a -t foo # 恢复名称为 foo 的会话，会话默认名称为数字
- tmux kill-session -t foo # 删除名称为 foo 的会话
- tmux kill-server # 删除所有的会话  
配合 alias 会得到更好的体验，比如我自己的配置

```shell
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 生产力。