一、概念:
- session:会话
- pane:窗格
- windows:窗口
在普通的Windows/Linux的Terminal中一个session和一个windows是绑定的,当一个wondows被kill之后,与其绑定的session也随之消失。
而在Tmux中,session和windows是解绑的。
打开一个Terminal,启动tmux,创建一个session与windows,当在这个windows中又创建一个在这个windows中可以运行程序。Tumx可以在一个session中创建多个windows,第一个windows并不会消失,而是被隐藏起来(仍然在运行),以此类推。你可以再需要的时候切换回来。
在一个windows中,可以被划分为多个pane,每一个pane都可以执行一个程序。(相当于一个windows由原来的一个程序,编程存在多个程序。)
session、windows、pane的关系:
二、安装
# Ubuntu or Debian
sudo apt-get install tmux
# CentOS or Fedora
sudo yum install tmux
# Mac
brew install tmux
三、Tumx操作
进入 tmux 会话后,大部分的 tmux 会话、窗口、空格相关操作都可以用快捷键完成。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b,即先按下 Ctrl+b,快捷键才会生效。
例如,帮助命令的快捷键是 Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下 Ctrl+b,再按下?,就会显示帮助信息。然后,按下 ESC 键或 q 键,就可以退出帮助。
再如,若你想分离会话(对应命令 tmux detach),那你就先按下 Ctrl+b,再按下 d,就会断开当前会话。
Ctrl+b 这个前缀键也可以配置,例如,在~/.tmux.conf 中添加一行 "set -g prefix C-x",就能将前缀键改为 Ctrl+x。
官网快捷键文件:
https://tmuxcheatsheet.com/
简明速查 | 🌟🌟🌟🌟🌟 (leftshadow.com)
会话操作
首先按下前缀键再按下如下快捷键。
:new<回车>
启动新会话s
列出所有会话$
重命名会话d
断开当前会话D
选择要断开的会话- 当断开这个session之后,可以通过
tmux a或者tmux attach
重新连接这个会话,输入tmux
会创建一个全新的session,也可以通过tmux attach -t x
连接到第x号session。
- 当断开这个session之后,可以通过
ctrl+z
挂起当前会话r
重载当前会话:
进入命令行模式,可以用 ls 等命令
窗格 (Pane) 操作
%
左右平分出两个窗格"
上下平分出两个窗格x
关闭当前窗格{
当前窗格前移}
当前窗格后移;
选择上次使用的窗格o
选择下一个窗格,也可以使用上下左右方向键来选择,比如切换到下方窗格,就按方向键↓
。!
将当前窗格拆分为一个独立窗口。space
切换窗格布局,tmux 内置了五种窗格布局,也可以通过⌥1
至⌥5
来切换z
最大化当前窗格,再次执行可恢复原来大小q
显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格Ctrl+方向键
以 1 个单元格为单位移动边缘以调整当前面板大小
窗口 (window) 操作
tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉 tmux 的窗口操作:
c
新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态p
切换至上一窗口n
切换至下一窗口w
窗口列表选择,注意 macOS 下使用⌃p
和⌃n
进行上下选择&
关闭当前窗口,
重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id0
切换至 0 号窗口,使用其他数字 id 切换至对应窗口f
根据窗口名搜索选择窗口,可模糊匹配
其它操作
?
列出所有快捷键;按 q 返回:
进入命令行模式;此时可以输入支持的命令,例如 kill-server 可以关闭服务器
四、Tmux配置
# 取消默认的 Ctrl + b 前缀
unbind C-b
# 将前缀修改为 Ctrl + x
set -g prefix C-x
# 取消原来的分割窗格快捷键
unbind %
unbind \" #这里一定是\",不能是",双引号(")是一个特殊字符,需要正确转义
# 设置新的快捷键,使用 [ 左右平分窗格
bind [ split-window -h
# 设置新的快捷键,使用 ] 上下平分窗格
bind ] split-window -v
# 启用鼠标支持
set -g mouse on