应用场景
当你使用SSH登录远程机器,想新开一个或多个Tab的时候,你需要重新执行SSH登录。
假设你的SSH不是免密登录,那么你每次登录都需要输入密码!
再假设你登录远程机器需要通过一台或多台跳板机,那么新开Tab的成本顿时就增加了很多很多很多…
天呐,谁来救救我啊?
答:Tmux
简单使用
我们先按顺序来简单的使用一下Tmux,然后再具体的介绍她的一些基本概念和常用快捷键等。
怎么打开Tmux?
tmux # 新建一个会话,未指定会话名称
tmux new -s demo # 新建一个会话,并指定会话名称为:demo
复制代码
怎么退出一个会话?
当你在会话中做一些耗时的操作,想退出但不关闭该会话时,怎么做呢?
- 直接在命令行中输入:
tmux detach
- 使用快捷键
Ctrl+b :
,然后输入detach
- 使用快捷键
Ctrl+b d
(推荐)
当你在会话中做一些即时的操作,想退出且关闭该会话时,怎么做呢?
- 直接在命令行中输入:
tmux kill-session
- 使用快捷键
Ctrl+b :
,然后输入kill-session
怎么查看会话列表?
当你想查看一下,有那些现存的会话,可以通过以下命令来查看
tmux list-sessions # 列出所有的会话
tmux ls # 别名
复制代码
怎么进入一个现存的会话?
当你想进入一个现存的会话,继续之前的操作,可以使用tmux attach -t session_name
命令,别名tmux a -t session_name
tmux a # 默认进入第一个会话
tmux a -t demo # 进入一个名为demo的会话
复制代码
怎么在会话中切换到另一个会话?
当你在某个会话中,想直接切换到另一个会话,可以使用tmux switch -t session_name
命令
tmux a # 进入第一个会话
tmux switch -t demo # 切换到名为demo的会话
复制代码
基本概念
Tmux中有几个概念,分别是Session、Window和Pane,它们之间的关系如下图所示:
在Tmux服务中,有多个Session,一个Session下有多个Window,一个Window下有多个Pane。
在创建一个Session时,会默认创建一个Window,默认创建一个Pane。
常用快捷键
系统指令
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | ? | 显示快捷键帮助文档 |
Ctrl+b | d | 退出当前会话 |
Ctrl+b | D | 选择退出当前会话 |
Ctrl+b | Ctrl+z | 挂起当前会话 |
Ctrl+b | r | 强制重载当前会话 |
Ctrl+b | s | 显示会话列表用于选择并切换 |
Ctrl+b | : | 进入命令行模式,此时可直接输入ls 等命令 |
Ctrl+b | [ | 进入复制模式,按q 退出 |
Ctrl+b | ] | 粘贴复制模式中复制的文本 |
Ctrl+b | ~ | 列出提示信息缓存 |
Window指令
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | c | 新建窗口 |
Ctrl+b | & | 关闭当前窗口(关闭前需输入y or n确认) |
Ctrl+b | 0~9 | 切换到指定窗口 |
Ctrl+b | p | 切换到上一窗口 |
Ctrl+b | n | 切换到下一窗口 |
Ctrl+b | w | 打开窗口列表,用于且切换窗口 |
Ctrl+b | , | 重命名当前窗口 |
Ctrl+b | . | 修改当前窗口编号(适用于窗口重新排序) |
Ctrl+b | f | 快速定位到窗口(输入关键字匹配窗口名称) |
Pane指令
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | “ | 当前面板上下一分为二,下侧新建面板 |
Ctrl+b | % | 当前面板左右一分为二,右侧新建面板 |
Ctrl+b | x | 关闭当前面板(关闭前需输入y or n确认) |
Ctrl+b | z | 最大化当前面板,再重复一次按键后恢复正常 |
Ctrl+b | ! | 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效) |
Ctrl+b | ; | 切换到最后一次使用的面板 |
Ctrl+b | q | 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板 |
Ctrl+b | { | 向前置换当前面板 |
Ctrl+b | } | 向后置换当前面板 |
Ctrl+b | Ctrl+o | 顺时针旋转当前窗口中的所有面板 |
Ctrl+b | 方向键 | 移动光标切换面板 |
Ctrl+b | o | 选择下一面板 |
Ctrl+b | 空格键 | 在自带的面板布局中循环切换 |
Ctrl+b | Alt+方向键 | 以5个单元格为单位调整当前面板边缘 |
Ctrl+b | Ctrl+方向键 | 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖) |
Ctrl+b | t | 显示时钟 |
个性化配置
Tmux的配置文件在~/.tmux.conf
里,如果没有,自行创建即可!
更改前缀快捷键
如果你觉得默认的Ctrl+b
的前缀快捷键不太好用,你可以自行更改为其他快捷键。
# 更改前缀快捷键为 Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
复制代码
更改分屏快捷键
默认的分屏快捷键不太方便记忆,可以将它们改成下面这样子。
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录
unbind %
bind | splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录
复制代码
开启鼠标支持
默认是不支持鼠标操作的,如果你不是键盘控,建议你开启。
开启后就可以通过鼠标直接点选Pane以及拖动调整Pane大小等。
set-option -g mouse on # 支持鼠标选取文本等
复制代码
映射方向键
如果你熟悉Vim,那你一定很喜欢hjkl
,下面将Tmux的方向键映射过来。
# -r表示可重复按键,大概500ms内,重复的按键都会有效,方便快速移动
bind -r k select-pane -U # 绑定k为上
bind -r j select-pane -D # 绑定j为下
bind -r h select-pane -L # 绑定h为左
bind -r l select-pane -R # 绑定l为右
复制代码
小结
有了这个宝藏工具,大叔的房子大了,生活好了,生活越来越好了!