tmux使用简介

以前用过screen,最近两年主要转移到tmux了,觉得更强大、更易用,也偶尔将tmux安利给需要的同事。这里把收集整理的tmux使用资料发布一下。

tmux 简介

tmux是一个终端复用、窗口分配的神器,其在github上地址为: https://github.com/tmux/tmux

tmux采用C/S模型构建,输入tmux命令就相当于开启了一个服务,此时将新建一个会话,然后会话中默认新建一个窗口,窗口中默认新建一个面板。一个tmux session(会话)可以包含多个window(窗口),窗口默认充满整个会话界面,允许在单个窗口中同时访问多个会话,允许每个会话有多个连接窗口,因此可以多人实时共享会话。一个window又可以包含多个pane(面板/窗格),窗口下的面板,都处于同一界面下。
如下图所示:

关键设置

1. 指令前缀 设置

由于tmux默认的 指令前缀 是 ctrl + b ,但这个组合键单手操作起来不太顺手,我一般就将其改为 ctrl + a 键。
在 ~/.tmux.conf 配置文件中设置:

unbind C-b                # 解除绑定Ctrl+b
set -g prefix C-a         # -g 选项全局配置(global),让设置的选项在所有创建的 tmux 会话里生效
bind C-a send-prefix      # 绑定Ctrl+a为新的指令前缀

tmux设置Ctrl+a为前缀后,会与终端的“将光标移动到行首”的快捷键(ctrl+a)冲突,那么实现移动到行首的快捷键是:按两下 ctrl + a
另外,将光标移动到行尾 是 ctrl + e (这个键与平时终端上操作的移动到行尾的并没有冲突)

2. 鼠标滚屏

tmux 默认配置中 滚屏查看和文本复制,用起来非常麻烦,效率远没有鼠标选择来的快。
好在 tmux 提供了一些个性化配置项来优化这些配置,在 ~/.tmux.conf 配置文件中做如下设置:

# 开启鼠标模式
set -g mode-mouse on
# 允许鼠标选择窗格
set -g mouse-select-pane on
# 如果喜欢给窗口自定义命名,那么需要关闭窗口的自动命名
set-option -g allow-rename off
# 如果对 vim 比较熟悉,可以将 copy mode 的快捷键换成 vi 模式
set-window-option -g mode-keys vi

配置文件修改完成后,可以 tmux kill-server 重启所有 tmux 进程,或者在 tmux 会话中使用 ⌃a : 进入控制台模式,输入 source-file ~/.tmux.conf 命令重新加载配置。

3. 鼠标复制

tmux 下开启鼠标滚屏后,复制文本有两种方式:(由于我一般是用Mac上的iTerm2,所以用方法2较为方便)
方法 1:使用 ⌃a z 进入窗格全屏模式,鼠标选择文本的同时按住 option 键 ⌥,然后使用 ⌘c 进行复制;
方法 2:开启 iTerm2 「在选择时复制」选项,即可实现自动选择复制。如下图:

常用操作

1. 分屏、窗格 pane:

上下分屏:ctrl + a 再按 ”
左右分屏:ctrl + a 再按 %
(布局水平显示:ctrl + a 再按 + ; 布局垂直显示:ctrl + a 再按 = ;这个可能和自身配置相关)
切换屏幕:ctrl + a 再按o (还有 h,j,k,l 和 上下左右方向箭头可用)
关闭一个面板:ctrl + a 再按x

2. 窗口 window:

c 创建新窗口
& 关闭当前窗口
[0-9] 数字键切换到指定窗口
p 切换至上一窗口
n 切换至下一窗口
l 前后窗口间互相切换
w 通过窗口列表切换窗口
, 重命名当前窗口,便于识别
. 修改当前窗口编号,相当于重新排序
f 在所有窗口中查找关键词,便于窗口多了切换

3. 会话 session:

? 列出所有快捷键;按q返回
d 脱离当前会话,可暂时返回Shell界面
$ 重命名当前会话
s 选择并切换会话;在同时开启了多个会话时使用
进入命令行模式;此时可输入支持的命令,例如 kill-server 关闭所有tmux会话

4. 最基本的Tmux使用流程:

1. tmux new -s $session-name     #新建会话
2. 在窗口中运行程序
3. ctrl+a d     #将会话分离
4. 出去休息一段时间……
5. tmux a -t $session-name   #重新连接到会话 查看程序执行情况

5. 其他一些命令:

tmux list-keys   列出所有快捷键,及其对应的 Tmux 命令
tmux list-commands  列出所有 Tmux 命令及其参数
tmux info  列出当前所有 Tmux 会话的信息
tmux source-file ~/.tmux.conf  重新加载当前的 Tmux 配置

参考文档:
https://www.cnblogs.com/kaiye/p/6275207.html
https://programtip.com/zh/art-14901
http://www.ruanyifeng.com/blog/2019/10/tmux.html
https://gist.github.com/Jiezhi/076543ff6141568c59bf tmux configure file from 《tmux:Productive Mouse-Free Development》

master

Stay hungry, stay foolish.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

*