封面

我的tmux之旅(tmux使用详解)

之前在中期学习计划中将tmux列入其中,但是一直没有花时间研究。周末看番的时候有一个tmux的视频推荐,点开看了一下觉得讲的挺好的,感觉是时候在工作中导入这个工具了。视频也直接嵌在正文中,有需要的朋友不妨看一下。

开胃菜

视频开头的动画up主讲到这个软件名字叫asciiquarium, 可以通过brew install asciiquarium命令来安装。其实没什么太大作用,就是终端中的一个动画,当作终端的屏保也不错。

q 退出动画

p 暂停动画

r 重置动画

tmux介绍

Tmux是一个键盘驱动的终端分屏工具,可以替代Linux下的screen。当然,如果是在Mac下使用的话,它的核心功能(例如window,分屏等)也是可以被iTerm2替代的,不过好在Tmux在*nix操作系统中足够通用,用包管理工具(apt-get, brew等)即可安装,所以了解并熟练使用它,还是能为平时终端下的工作节省不少时间的。而且最重要的功能是它可以保存会话,避免每次开机都得重复性的去开各种窗口。

session

会话,Tmux是一个C/S架构的工具,一个会话可以认为是C端和S端一次交互的上下文。我们的所有操作都属于某个session,session可以长时间存在,也可以临时退出再重进。我们可用通过session来区分不同的工作空间,比如本地操作开一个session,远程SSH操作开一个session,又或者SSH生产环境机器开一个session,SSH测试环境机器开一个session。

新建会话

第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。

使用编号区分会话,不太直观,更好的方法是为会话起名。

>   $ tmux new -s <session-name>
>

上面命令新建一个指定名称的会话。

分离会话

在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。

>   $ tmux detach
>

上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。

tmux ls命令可以查看当前所有的 Tmux 会话。

>   $ tmux ls
> # or
> $ tmux list-session
>

接入会话

tmux attach命令用于重新接入某个已存在的会话。

>   # 使用会话编号
> $ tmux attach -t 0
>
> # 使用会话名称
> $ tmux attach -t <session-name>
>

杀死会话

tmux kill-session命令用于杀死某个会话。

>   # 使用会话编号
> $ tmux kill-session -t 0
>
> # 使用会话名称
> $ tmux kill-session -t <session-name>
>

切换会话

tmux switch命令用于切换会话。

>   # 使用会话编号
> $ tmux switch -t 0
>
> # 使用会话名称
> $ tmux switch -t <session-name>
>

重命名会话

tmux rename-session命令用于重命名会话。

>   $ tmux rename-session -t <now-name> <new-name>
>

上面命令可以将会话重命名。

会话(Session)快捷键

Ctrl+b d:分离当前会话。

Ctrl+b s:列出所有会话。

Ctrl+b $:重命名当前会话。

window

如果说session是个不可见的东西,那么window就是我们输入、执行命令的地方。一个session可以包含多个window。把window类比成iTerm2中的标签应该就理解了。在创建session的时候默认会创建一个以”数字下标+bash”命名的window,并且名称随着bash中执行的不同命令而变化。在新建session时可以通过-n参数指定默认打开的window名称,比如通过 tmux new -s basic -n win 命名一个win名称的window。也可以随时通过 Prefix+, 来修改window名称。

tmux new-window命令用来创建新窗口。

>   $ tmux new-window
>
> # 新建一个指定名称的窗口
> $ tmux new-window -n <window-name>
>

切换窗口

tmux select-window命令用来切换窗口,也可以用按下前置快捷键 ctrl+b ,然后按数字键切换。

>   # 切换到指定编号的窗口
> $ tmux select-window -t <window-number>
>
> # 切换到指定名称的窗口
> $ tmux select-window -t <window-name>
>

重命名窗口

tmux rename-window命令用于为当前窗口起名(或重命名),也可以按下前置快捷键ctrl+b,然后按,

>   $ tmux rename-window <new-name>
>

窗口(Window)快捷键

下面是一些窗口操作的快捷键。

Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。

Ctrl+b w:从列表中选择窗口。(强烈推荐:它可以跨session选择所有的window)

Ctrl+b ,:窗口重命名。

Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。

Pane

一个window可以切割成多个pane,也就是所谓的分屏,算是Tmux的核心功能之一。

划分窗格

tmux split-window命令用来划分窗格。

>   # 划分上下两个窗格 快捷键 Ctrl+b "
> $ tmux split-window
>
> # 划分左右两个窗格 快捷键 Ctrl+b %
> $ tmux split-window -h
>

移动光标

tmux select-pane命令用来移动光标位置, 也可以按下前置快捷键 ctrl+b,然后按方向键切换。

>   # 光标切换到上方窗格
> $ tmux select-pane -U
>
> # 光标切换到下方窗格
> $ tmux select-pane -D
>
> # 光标切换到左边窗格
> $ tmux select-pane -L
>
> # 光标切换到右边窗格
> $ tmux select-pane -R
>

交换窗格位置

tmux swap-pane命令用来交换窗格位置。

>   # 当前窗格上移
> $ tmux swap-pane -U
>
> # 当前窗格下移
> $ tmux swap-pane -D
>

窗格(Pane)快捷键

下面是一些窗格操作的快捷键,窗格相关的快捷键比较多,毕竟是我们主要的工作区,但是实际用的非常频繁的并不多。

Ctrl+b %:划分左右两个窗格。

Ctrl+b ":划分上下两个窗格。

Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键

Ctrl+b x:关闭当前窗格。

Ctrl+b ;:光标切换到上一个窗格。

Ctrl+b o:光标切换到下一个窗格。

Ctrl+b {:当前窗格与上一个窗格交换位置。

Ctrl+b }:当前窗格与下一个窗格交换位置。

Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。

Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。

Ctrl+b !:将当前窗格拆分为一个独立窗口。

Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。

Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。

Ctrl+b q:显示窗格编号。

安装tmux

# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

配置tmux

cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

做完以上配置后就有了和up演示中一样的功能。

前缀键

Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。

举例来说,帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。

然后,按下 ESC 键或q键,就可以退出帮助。

tmux帮助命令

# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys

# 列出所有 Tmux 命令及其参数
$ tmux list-commands

# 列出当前所有 Tmux 会话的信息
$ tmux info

# 重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf

tmux快捷键汇总

Ctrl+b 激活控制台;此时以下按键生效
系统操作 ? 列出所有快捷键;按q返回
d 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D 选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z 挂起当前会话
r 强制重绘未脱离的会话
s 选择并切换会话;在同时开启了多个会话时使用
: 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[ 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
窗口操作 c 创建新窗口
& 关闭当前窗口
数字键 切换至指定窗口
p 切换至上一窗口
n 切换至下一窗口
l 在前后两个窗口间互相切换
w 通过窗口列表切换窗口
, 重命名当前窗口;这样便于识别
. 修改当前窗口编号;相当于窗口重新排序
f 在所有窗口中查找指定文本
面板操作 将当前面板平分为上下两块
% 将当前面板平分为左右两块
x 关闭当前面板
! 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
Space 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q 显示面板编号
o 在当前窗口中选择下一面板
方向键 移动光标以选择面板
{ 向前置换当前面板
} 向后置换当前面板
Alt+o 逆时针旋转当前窗口的面板
Ctrl+o 顺时针旋转当前窗口的面板

参考文章

阮一峰-Tmux 使用教程

亡灵族-tmux常用命令

文章目录
  1. 1. 开胃菜
  2. 2. tmux介绍
  3. 3. session
    1. 3.1. 新建会话
    2. 3.2. 分离会话
    3. 3.3. 接入会话
    4. 3.4. 杀死会话
    5. 3.5. 切换会话
    6. 3.6. 重命名会话
    7. 3.7. 会话(Session)快捷键
  4. 4. window
    1. 4.1. 切换窗口
    2. 4.2. 重命名窗口
    3. 4.3. 窗口(Window)快捷键
  5. 5. Pane
    1. 5.1. 划分窗格
    2. 5.2. 移动光标
    3. 5.3. 交换窗格位置
    4. 5.4. 窗格(Pane)快捷键
  6. 6. 安装tmux
  7. 7. 配置tmux
  8. 8. 前缀键
  9. 9. tmux帮助命令
  10. 10. tmux快捷键汇总
  11. 11. 参考文章


twitter分享


如果想及时收到回复,可在 订阅中心Participating中勾选Email

Fork me on GitHub