0%

Linux基础之Tmux使用姿势

1. 前言

  之前讲了如何安装 Tmux,这篇文章讲讲如何使用 Tmux。其实工具的使用都是很简单,最终是看你如何使用这个工具,才能发挥出工具最大的作用。

2. 基础知识

  在讲如何使用 Tmux 之前,我们需要先熟悉它的几个概念。

  • 会话(Session)
  • 窗口(Window)
  • 面板(Pane)

会话:会话的概念很好理解。我们一台服务器正在那边运行着,我们拿终端工具如:XShell、SecureCRT 等去连接的时候,每新建一个连接,就是一个新的会话。使用 Tmux 新建会话的时候,也是一样,一个新的会话就表示一个新的连接。

窗口:窗口的概念,可以类比于 Windows 里面的窗口的概念。之前我们连服务器的时候,终端工具每次连接只有一个界面,当我们需要同时操作多个过程的时候,我们就需要建立新的连接。这样很不方便。Tmux 里面的窗口的概念,就可以让我们在一个会话里有多个界面,就不需要去建立的一个会话。

面板:面板的概念的话,是用于对界面的布局而言的。就是将一个界面划分为多个不同的区域,每个区域我们称之为一个面板。

  简单来说就是,一个会话里面可以有多个窗口,一个窗口里面可以有多个面板。

3. 命令行使用方式

  Tmux 可以有两种使用方式,一种是命令行的方式,一种是快捷键的方式。前者的话不需要怎么记忆,后者的话效率更高。我觉得还是命令行入门,先熟悉这个工具的作用,之后将常用的几个功能的快捷键记下来,多使用,多熟练。

3.1 会话操作

1
$ tmux new -s [session_name]  //  创建一个会话

创建完会话之后,会自动进入这个会话之内。并且会话默认帮你创建好一个窗口。

1
$ tmux list-sessions // 显示所有会话,也可以简写成 tmux ls

当前的话,我一共有一个会话,并且会话的名称为: session1 。

1
2
3
4
5
$ tmux detach // 退出当前的会话,返回 shell 界面
$ tmux kill-session -t [session_name ] // 结束一个会话
$ tmux attach -t [session_name] // 回到某一个会话当中
$ tmux switch -t [session_name] // 切换到某一会话当中
$ tmux kill-server // 关闭所有会话

3.2 窗口操作

  讲完会话的操作,我们来讲讲窗口的操作。

1
$ tmux new-window [-n window_name] // 创建一个新的窗口,可以指定新的窗口的名字也可以不指定

这边,我新建了一个名为 window1 的窗口,并且 Tmux 自动帮我切换到了这个窗口,* 标记当前正在使用的窗口,一个窗口默认包含一个面板。

1
$ tmux rename-window [new_window_name] // 重命名当前窗口的名字

1
$ tmux list-windows // 显示当前会话中所有的窗口

1
2
$ tmux kill-window -t [window_name | window_index] // 关闭一个窗口
$ tmux select-window -t [window_index] // 切换窗口

3.3 面板操作

1
2
$ tmux split-window //将一个面板垂直切成两个面板
$ tmux split-window -h // 将一个面板水平切成两个面板

可以看到图片中的话,我将一个窗口切成了三部分区域,每一个区域都是一个面板。

1
2
$ tmux swap-pane -[UDRL] // 选择 [ 上下左右 ] 的面板交换
$ tmux select-pane -[UDRL] // 选择 [ 上下左右 ] 的面板进行切换

  以上的话就是同过命令行的方式使用 Tmux,使用命令行的方式,可以简单了解一下 Tmux 这个工具提供的一些功能。接下来就是进阶的,使用快捷键的方式操作 Tmux。

4. 快捷键使用方式

  Tmux 快捷键的话需要先按下前缀键,之后再按快捷键才会有效果。 Tmux 默认的前缀键是 Ctrl + b。我就只简单罗列一下快捷键,实际效果的话,使用一下就知道了,上面使用命令行能达到的功能,都能找到相应的快捷键。

  Tmux 还有一个配置文件,可以根据自己的习惯将快捷键改成自己喜欢的键。

4.1 基本操作

1
2
3
4
5
6
7
8
9
10
? 列出所有快捷键;按q返回
d 脱离当前会话,可暂时返回Shell界面
s 选择并切换会话;在同时开启了多个会话时使用
D 选择要脱离的会话;在同时开启了多个会话时使用
: 进入命令行模式;此时可输入支持的命令,例如 kill-server 关闭所有tmux会话
[ 复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出
] 进入粘贴模式,粘贴之前复制的内容,按q/Esc退出
~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
t 显示当前的时间
ctrl + z 挂起当前会话

4.2 窗口操作

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

4.3 面板操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
" 将当前面板上下分屏
% 将当前面板左右分屏
x 关闭当前分屏
! 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板
ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小
alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
q 显示面板编号
o 选择当前窗口中下一个面板
方向键 移动光标选择对应面板
{ 向前置换当前面板
} 向后置换当前面板
alt+o 逆时针旋转当前窗口的面板
ctrl+o 顺时针旋转当前窗口的面板
z 最大化当前所在面板
page up 向上滚动屏幕,q 退出
page down 向下滚动屏幕,q 退出

5. 总结

  说到底 Tmux 也就是这么一个工具,功能也就这么多,但是将 Tmux 和 Vim 结合起来的时候,效果就不一样了,在命令行下开发,整个逼格一下就上去了。装逼使人进步。

博客地址:https://win-man.github.io/
公众号:欢迎关注