tmux主要的功能有两点:
- 终端利用,可以在一个terminal开启多个shell的session,这样就不需要vim一个terminal,命令又要需要一个,其他服务还要再开一个了。
- 断线保证任务在后台继续执行,以及当你上线后保证原来打开的多个窗口与断线之前完全一样。以后就不用再使用screen了
两个功能都非常棒,值得花点时间学习,分分钟就能掌握基本应用。tmux
中有三个最基本的概念: 会话(session)、窗口(window)、窗格(Pane)
当开启tmux后,它首先会创建一个会话,在会话中会首先创建一个窗口,窗口中会创建一个面板,一个面板就可以当成一个我们可以使用的shell窗口。
下面会混用窗格和面板,都指pane
tmux
使用C/S
模型,主要包含以下模块:
- server服务器。输入tmux命令时就开启了一个服务器。
- session会话。一个服务器可以包含多个会话
- window窗口。一个会话可以包含多个窗口。
- pane面板。一个窗口可以包含多个面板。
基本应用
启动tmux
安装后在命令行输入tmux
就启动了,看到只有一个窗口,窗口下方会有基本状态信息。tmux
的使用可以完全靠快捷键,快捷键以前缀快捷键+快捷键构成,默认的前缀(prefix)快捷键是ctrl-b
,用法是按下Ctrl-b
,放开后再按下相应的快键即可,例如查看tmux
会话的快捷键是s,可以按下ctrl-b
,放开再按s
,即可查看当前的所有会话。
知道怎么按快捷键也就会有tmux了,下面试一下纵向分隔窗口的快捷键:
1 | prefix % |
横向分隔窗口:
1 | prefix " |
窗口间切换prefix <相应方向键>
这样你就可以在一个terminal中即开多个vim,又进行其他操作了。
希望这些切换可以像vim的快捷键一样?看后面的配置
退出或关闭tmux
当要退出tmux时可以使用exit
,这样会关闭当前的tmux面板,当所有面板关闭时也就退出了窗口。
如果要让它在后台运行,你要先回到普通的terminal,使用快捷键prefix &
。
想再回来,比如断线重连时,可以使用tmux attach
,或者直接tmux a
,可以可看其常用命令获取更多内容。
要关闭整个tmux服务的话使用tmux kill-server
查看版本:tmux -V
会话相关命令tmux new -s [session_name]
创新新会话tmux new -s [session_name] -d
在后台建立会话tmux ls
列出会话tmux attach -t [session_name]
进入某个会话
或者在tmux中使用命令prefix :new-session
新一个会话
复制面板中的内容
prefix [
进入复制模式- 按
space
开始复制,移动光标选择复制区域 - 按
Enter
复制并退出复制模式。 - 将光标移动到指定位置,按
prefix ]
粘贴
常用快捷键
注意窗格是指Pane,窗口是指window
C-b ?
显示快捷键帮助C-b :
进入命令模式C-b C-z
挂起会话,不影响其他命令的运行C-b C-o
调换窗格位置,类似与vim 里的C-wC-b 空格键
采用下一个内置布局C-b !
把当前窗格(pane)变为新窗口(window)C-b "
横向分隔窗格C-b %
纵向分隔窗格C-b q
显示分隔窗格的编号C-b o
跳到下一个分隔窗格C-b 上下键
上一个及下一个分隔窗格C-b C-方向键
调整分隔窗格大小,注意C表示Ctrl键C-b z
最大化当前窗格,再一次则恢复C-b c
创建新窗口C-b 0~9
选择几号窗口C-b n
选择下一个窗口C-b p
选择前一个窗口C-b l
切换到前一个窗口,该快捷键通常会被重定义为符合vim下的空格切换C-b w
以菜单方式显示及选择窗口C-b s
以菜单方式显示和选择会话C-b t
显示时钟C-b ;
切换到最后一个使用的面板C-b x
关闭面板C-b &
关闭窗口C-b d
退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
tmux中很多需要移动光标的地方都支持vim的i,j,k,h
,可以自行试试
配置
为了让tmux更加好用,就像vim一样,我们需要进行一些个性化的配置。tmux的系统级配置文件在/etc/tmux.conf
,用户级配置文件可以放在~/.tmux.conf
下面给出一份我自己在使用的,主要是针对vim的使用习惯进行了一些键绑定,增加了2个插件,功能内容都有注释:
1 | # rebind prefix key |
修改完配置文件之后可以在tmux中按快捷键Ctrl-b :
进入命令模式,输入source-file ~/.tmux.conf
,使其生效。经过上述配置文件之后,以后修改完配置文件直接使用Ctrl-b r
就可以重新加载新配置文件了。
如果是在terminal中,使用命令tmux source-file ~/.tmux.conf
使配置生效。
插件
这里主要推荐4个插件,确切来说是2组。
tpm
用于管理tmux插件,类似与vim下的vundle
地址:https://github.com/tmux-plugins/tpm
tmux-sensible
一些tmux的基本配置,适合几乎所有人,可以看一下它的配置内容
地址:https://github.com/tmux-plugins/tmux-sensible
tmux-resurrect
用户保存和恢复tmux的运行环境,非常好用,当你需要对当前你打开的tmux的会话、窗口、空格以及其位置保存时,直接按快捷键prefix Ctrl-s
即可保存,需要恢复时是prefix Ctrl-r
。
地址:https://github.com/tmux-plugins/tmux-resurrect
tmux-continuum
可以用于配合tmux-recurrect,它会自动化地帮你保存和恢复
地址:https://github.com/tmux-plugins/tmux-continuum
其他问题
会话的命令行操作
命令 | 功能 |
---|---|
tmux ls |
# 显示所有会话 |
tmux new -s <session-name> |
#新建会话,并指定会话名 |
tmux new |
# 新建会话,会话名自动为数字序号 |
tmux a |
# 接入上一个会话 |
tmux a -t <session-name> |
# 接入指定会话 |
tmux detach |
# 断开当前会话,等价于ctrl+b d |
tmux kill-session -t <session-name> |
# 关闭指定会话 |
tmux kill-session -a -t <session-name> |
#关闭除指定会话外的其他所有会话 |
tmux kill-server |
# 销毁所有会话并停止tmux |
参考
- tmux使用及个性化配置
- [StackOverFlow]
- [man tmux]