第三十九章:tmux
一:tmux
1.介绍
1.1 tmux 是什么
tmux 是一个终端复用器,非常有用,有如下两个最明显的优点:
1. 分屏
2. 允许断开 Terminal 连接后,继续运行进程。(这样网络断开重连后,可以重新登录之前的工作界面)
这段引用阮一峰《Tmux 使用教程》。
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2)它可以让新窗口 "接入" 已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
1.2 tmux 组件
tmux 使用 C/S 模型构建,主要包含这几个模块:
| 模块 | 含义 |
|---|---|
| server | 服务器,输入tmux命令时就开启了一个服务器。 |
| session | 会话,一个服务器可以包含多个会话,可理解为任务。 |
| window | 窗口,一个会话可以包含多个窗口。 |
| panel | 面板,一个窗口可以包含多个面板。 |
这几个组件形成了树状关系,如下图所示:
server
/ \
session
/
window
/
panel
2.安装
由于 tmux 依赖于 libevent 和 ncurses-devel,所以应首先有这两个库,和相关的头文件。
1.对于 ncurses-devel,可用 yum 安装。
yum install ncurses-devel
- 对于 libevent,这里我使用的是 libevent 源码安装,使用版本为libevent-2.0.20-stable.tar.gz (可百度)。安装步骤如下:
tar -xzf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure --prefix=/tmp/libevent
make
make install
- 这里使用的 tmux 版本为 tmux-1.7.tar.gz (可百度),安装步骤如下:
tar -xzf tmux-1.7.tar.gz
cd tmux-1.7
CFLAGS="-I/tmp/libevent/include" LDFLAGS="-L/tmp/libevent/lib" ./configure --prefix=/usr/local/tmux
make
sudo make install
4.在 .bashrc 文件中加入 PATH=/usr/local/tmux/bin:$PATH,使得命令查找路径含有 /usr/local/tmux/bin/ 。然后执行 source ~/.bashrc 使得的配置生效。
5.执行 tmux 命令,若出现下面的错误:
tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
可执行下面的命令将库拷到默认路径下
sudo cp /tmp/libevent/lib/libevent-2.0.so.5 /usr/lib
若依然无法找到,可在/etc/ld.so.conf中增加一行/usr/lib 保存后,执行
ldconfig
此后,再执行tmux即可。
3.常用命令
| 序号 | 命令 | 描述 |
|---|---|---|
| 1 | tmux new -s name | 新建会话 |
| 2 | tmux ls | 查看已有会话 |
| 3 | tmux detach | 退出当前会话,但不会关闭会话 |
| 4 | tmux a -t name | 进入已存在的会话 |
| 5 | tmux kill-session -t | 删除会话 |
| 6 | tmux switch -t your-session-name | 切换 |
| 7 | tmux rename-session -t old-session new-session | 重命名 |
注意:
1.每次在一个会话中使用 python3 执行一个 py 文件,都要重新在打开一个终端,在走一遍流程
2.如果使用的是 python 虚拟环境,要先进 tmux,在进虚拟环境
小结:
一般的使用流程:
# 1、新建会话tmux new -s my_session
# 2、在 Tmux 窗口运行所需的程序
# 3、按下快捷键 Ctrl+b d 将会话分离
# 4、下次使用时,重新连接到会话tmux attach-session -t my_session。
二:使用方法
1.快捷键
列出所有快捷键,及其对应的 tmux 命令:
tmux list-keys
1.1 session 操作
| 作用 | 命令 | 快捷键 |
|---|---|---|
| 启动 | tmux # 会自动生成一个id为0的session 或: tmux new -s your-session-name # 建立时显式地说明session的名字 注意:不能嵌套创建session | |
| 删除session | tmux kill-session -t your-session-name | ctrl+d |
| 解绑 | tmux detach | ctrl+b d |
| 接入会话 | tmux attach -t your-session-name | |
| 切换session | tmux switch -t your-session-name | |
| 重命名session | tmux rename-session -t old-session new-session | Ctrl+b $ |
| 列出session | tmux ls 或: tmux list-session | ctrl+b s |
1.2 window 操作
| 作用 | 命令 | 快捷键 |
|---|---|---|
| 新建window | tmux new-window 或: tmux new-window -n your-window-name | ctrl+b c |
| 刪除window | tmux kill-window -t window-number | ctrl+b & |
| 切换窗口 | tmux select-window -t | ctrl+b p # 切换到上一个窗口 ctrl+b n # 切换到下一个窗口 ctrl+b w # 从列表中选择窗口 |
| 重命名窗口 | tmux rename-window -t old_name new_name | ctrl+b |
1.3 panel 操作
| 作用 | 命令 | 快捷键 |
|---|---|---|
| 划分为上下两个窗格 | tmux split-window | ctrl+b % |
| 划分为左右两个窗格 | tmux split-window -h | ctrl+b “ |
| 关闭panel | tmux kill-pane | Ctrl+b x |
| 移动光标 | tmux select-pane -U 光标切换到上方窗格 tmux select-pane -D 光标切换到下方窗格 tmux select-pane -L 光标切换到左边窗格 tmux select-pane -R 光标切换到右边窗格 | Ctrl+b 上下左右键,鼠标见第3节 |
| 上下翻屏 | ctrl+b [ 上下键 pageUp pageDown |
2.其他操作
2.1 怎么修改前缀键?
使用Ctrl+b并不是很顺手,可以自定义前缀键,如将ctrl+b修改为ctrl+x可进行如下操作:
方法1: 在命令行下输入如下命令
$ tmux set -g prefix C-x
方法2:修改配置文件
$ vi ~/.tmux.conf
set -g prefix C-x
unbind C-b
bind C-x send-prefix
$ tmux source ~/.tmux.conf
2.2 启用鼠标控制
tmux2.1 之后版本可以这么设置,这样就可以用鼠标选择panel了
$ vi ~/.tmux.conf
set-option -g mouse on
$ tmux source ~/.tmux.conf
开启了鼠标控制后,会发现---无法直接通过鼠标来选择复制文字了
可以用Shift+鼠标选择,多panel情况下,Shift+Alt+鼠标选择

浙公网安备 33010602011771号