第三十九章: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
  1. 对于 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
  1. 这里使用的 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+鼠标选择

posted @ 2023-06-25 16:46  亦双弓  阅读(108)  评论(0)    收藏  举报