封面

我的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.0.1. 新建会话
    2. 3.0.2. 分离会话
    3. 3.0.3. 接入会话
    4. 3.0.4. 杀死会话
    5. 3.0.5. 切换会话
    6. 3.0.6. 重命名会话
  • 4. 会话(Session)快捷键
  • 5. window
    1. 5.0.1. 切换窗口
    2. 5.0.2. 重命名窗口
    3. 5.0.3. 窗口(Window)快捷键
  • 6. Pane
    1. 6.0.1. 划分窗格
    2. 6.0.2. 移动光标
    3. 6.0.3. 交换窗格位置
    4. 6.0.4. 窗格(Pane)快捷键
  • 7. 安装tmux
  • 8. 配置tmux
  • 9. 前缀键
  • 10. tmux帮助命令
  • 11. tmux快捷键汇总
  • 12. 参考文章


  • twitter分享


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

    Fork me on GitHub