介绍
Tmux是一个优秀的终端复用软件,支持多标签,也支持窗口内部面板的分割,更重要的是,Tmux提供了窗体随时保存和恢复的功能。想象一下假如你在公司的服务器上开了许多窗口调试程序,回到家时通过SSH连接公司电脑又要打开一堆繁琐的窗口,而且还忘记了当时调试到哪一步了,那Tmux可以帮你解决这个难题,当SSH连接断开重新连接后能够恢复到原来的工作环境。
安装
安装依赖包
|
|
安装tmux
从git上下载最新代码编译安装,参见github
运行
运行可能出现如下错误
建立一下符号链接即可
|
|
启动如出现
重新安装解决
完成进入tmux进入软件,界面类似一个下方带有状态栏的终端。
基本概念
Tmux基于典型的c/s模型,主要分为会话、窗口和面板三个元素:
- 服务器:输入tmux命令时就开启了一个服务器。
- Session:输入tmux后就创建了一个会话,一个会话是一组窗体的集合。
- Window:会话中一个可见的窗口。
- Pane:一个窗口可以分成多个面板。
注:图片来自网络
图中左下角的3显示为当前会话,随后1 vim,2 bash,3 ssh 分别是3个窗口,蓝色bash表示当前窗口,图中用蓝色数字标记的1,2,3分别是bash窗口的三个面板。你还可以在tmux配置文件中给状态栏添加时间、天气等信息。
启动
第一次会产生一个新的 session 和 window ,在下方会显示其状态,如果意外断开 (detach) 连接,session 仍会在后台运行,每个窗口可以分为多个 pane 。
启动时的参数选项有:
- -2: 强制 tmux 假设终端支持 256 色。
- -8: 类似于 -2 ,不过是强制 tmux 假设终端支持 88 色。
- -c shell-command: 使用默认的 shell 执行命令,主要用于当 tmux 作为 login shell 时使用。
- -f file: 指定配置文件,默认检查 /etc/tmux.conf、~/.tmux.conf,如果有命令错误,则会直接退出。
- -V: 查看版本号。
默认 tmux 会创建的匿名的 session ,可以通过如下命令创建一个命名的 session , Ctrl-b 是命令前缀(Command prefix),通过前缀告知 tmux 下面的命令是发给 tmux 的,而非终端。常见的操作如下。123456789$ tmux new-session -s basic # 创建一个名为 basic 的 session$ tmux new -s basic -d # 同上,但是不会连接到终端,在后台运行$ tmux new -s basic -n win # 同上,并将第一个窗口命令为 win$ tmux ls # 列出现在的 sessions ,等同 tmux list-sessioin$ tmux attach # 如果只有一个 session$ tmux attach -t basic # 指定名称,-t 表示 target$ tmux kill-session -t basic # 关闭一个 session
操作
基本操作
命令 | 操作 |
---|---|
? | 列出所有快捷键;按q返回 |
d | 脱离当前会话,可暂时返回Shell界面,输入tmux attach能够重新进入之前会话 |
s | 选择并切换会话;在同时开启了多个会话时使用 |
D | 选择要脱离的会话;在同时开启了多个会话时使用 |
: | 进入命令行模式;此时可输入支持的命令,例如kill-server所有tmux会话 |
[ | 复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出 |
] | 进入粘贴模式,粘贴之前复制的内容,按q/Esc退出 |
~ | 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 |
t | 显示当前的时间 |
Ctrl+z | 挂起当前会话 |
窗口操作
命令 | 操作 |
---|---|
c | 创建新窗口 |
& | 关闭当前窗口 |
数字键 | 切换到指定窗口 |
p | 切换至上一窗口 |
n | 切换至下一窗口 |
l | 前后窗口间互相切换 |
w | 通过窗口列表切换窗口 |
, | 重命名当前窗口,便于识别 |
. | 修改当前窗口编号,相当于重新排序 |
f | 在所有窗口中查找关键词,便于窗口多了切换 |
面板操作
命令 | 操作 |
---|---|
“ | 将当前面板上下分屏 |
% | 将当前面板左右分屏 |
x | 关闭当前分屏 |
! | 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板 |
Ctrl+方向键 | 以1个单元格为单位移动边缘以调整当前面板大小 |
Alt+方向键 | 以5个单元格为单位移动边缘以调整当前面板大小 |
空格键 | 可以在默认面板布局中切换,试试就知道了 |
q | 显示面板编号 |
o | 选择当前窗口中下一个面板 |
方向键 | 移动光标选择对应面板 |
{ | 向前置换当前面板 |
} | 向后置换当前面板 |
Alt+o | 逆时针旋转当前窗口的面板 |
Ctrl+o | 顺时针旋转当前窗口的面板 |
z | tmux 1.8新特性,最大化当前所在面板 |
配置
用户私人配置文件在~/.tmux.conf, 全局配置文件在 /etc/tmux.conf。修改这两处均可。
前缀修改
Tmux的所有操作必须使用一个前缀进入命令模式,默认前缀为ctrl+b,很多人会改为ctrl+a,你可以修改tmux.conf配置文件来修改默认前缀:
|
|
配置更新
配置完以后,重启tmux起效,或者先按C+b,然后输入:,进入命令行模式, 在命令行模式下输入:
你也可以跟我一样,在配置文件中加入下面这句话,以后改了只需要按前缀+r了。
复制模式copy-mode
- 前缀 [ 进入复制模式
- 按 space 开始复制,移动光标选择复制区域
- 按 Enter 复制并退出copy-mode。
- 将光标移动到指定位置,按 PREIFX ] 粘贴
如果把tmux比作vim的话,那么我们大部分时间都是处于编辑模式,我们复制的时候可不可以像 vim一样移动呢?只需要在配置文件(~/.tmux.conf)中加入如下行即可。12#copy-mode 将快捷键设置为vi 模式setw -g mode-keys vi
开启批量执行
如果已经修改prefix键位Ctrl+a,则Ctrl+a[默认Ctrl+b]后输入:set synchronize-panes ,输入:set sync [TAB]键可自动补齐
脚本化启动
把以下脚本内容加入到~/.bashrc,即可每次登录进入到tmux
自动关联session
判断是否已有开启的tmux会话,没有则开启,有则关联当前一打开的会话
滚动
使用下列快捷键可以进入滚动模式:
这会使你进入滚动模式,然后你可以使用上下键或翻页键进行滚动,翻页.
这个快捷键会使你立即进入滚动模式,并向上翻页.
自定义状态栏
|
|
256颜色表
注:图片来自网络
插件配置状态栏
使用tmux-powerline插件配置状态栏。
|
|
开启
|
|
显示No weather location specified
时,需要修改segments/weather.sh文件,参考
securtcrt或者putty中powerline中文显示问题,参考让putty,secureCRT等工具支持Powerline,oh-my-zsh,解决乱码问题
插件管理
安装插件管理器
|
|
配置
|
|
启用
安装、升级和反安装插件
常用插件
tmux-resurrect
保存和恢复 Tmux 会话,面板布局,甚至支持恢复vim会话,重启机器仍可恢复。参考保存和恢复 Tmux 会话。
在tmux.conf中添加
添加插件后prefix + I
即下载并开启
参考:
tmux – Linux终端管理软件
Tmux (简体中文))
CentOS 下安装 tmux
Tmux 插件管理工具
tmux-themepack
在 Linux/Mac 安装 Tmux 及其配置
TMUX 简介