文档章节

Tmux 简介与使用

Konghy
 Konghy
发布于 2016/09/29 21:04
字数 2030
阅读 161
收藏 3

Tmux 是一个用于在终端窗口中运行多个终端会话的工具,即终端复用软件(terminal multiplexer)。在 Tmux 中可以根据不同的工作任务创建不同的会话,每个会话又可以创建多个窗口来完成不同的工作,每个窗口又可以分割成很多小窗口。这些功能都是非常实用的。

Tmux 的多窗口和窗口分割并不是它吸引的我原因,对于这一点我可以有另外一个终端工具代替,即 Terminator。使用 Tmux 最大的益处在于,远程 SSH 访问服务器进行工作时。即使非正常掉线,它能保存当前工作状态,并保证当前任务继续运行。这一点对于远程 SSH 工作的人来说是非常重要的。远程 ssh 工作时,Tmux 的多会话、多窗口、多面板的益处才充分体现了出来。使用 Tmux 就不必开启多个标签连接多个 ssh 了,所有工作在一个 ssh 连接上就搞定了,也不必担心突然掉线后工作丢失。

与 Tmux 类似的软件还有 screen、dvtm、splitvt、byobu 等。

会话, 窗口, 窗格

根据 Tmux 的定义,在开启了 Tmux 服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个窗格;也就是说,这里看到的所谓终端控制台应该称作 Tmux 的一个窗格,虽然其使用方法与终端控制台完全相同。

Tmux 使用 C/S 模型构建,主要包括以下单元模块:

  • server 服务器:输入 tmux 命令时就开启了一个服务器,服务器由于管理多个会话。
  • session 会话:一个服务器可以包含多个会话,可以理解成是一个特定的终端组合,通常将同一任务下的工作放到一个会话中。
  • window 窗口:一个会话可以包含多个窗口,一个窗口就相当于普通终端的一个标签,通常在不同的窗口中完成不同的工作。
  • pane 窗格:一个窗口可以被分割成多个小的窗格。

会话,窗口和窗格是 Tmux 的基本概念,在使用 Tmux 之前必须要理解他们的含义。

安装

在 Mac OS 中安装:

$ brew install tmux

在 Ubuntu 中安装:

sudo apt-get install tmux

或者下载源码编译安装:https://tmux.github.io/

基本使用

对 Tmux 的操作都是用命令或者快捷键来完成的,在使用 Tmux 快捷键时都需要加上一个命令前缀(prefix),即 Ctrl+b。快捷键的使用方法是,按下组合键 Ctrl-b,接着放开组合键 Ctrl-b,接着再按相关的快捷键。如果你觉得 Ctrl+b 使用起来不方便,可以重定义命令前缀,在配置文件 ~/.tmux.conf 中添加如下内容:

# remap prefix from 'C-b' to 'C-a'
unbind C-b
set -g prefix C-a
bind-key C-a send-prefix

运行 tmux 命令直接新建一会话,并进入:

tmux

每一个会话都有一个编号或者名字,用于在会话间切换或者重新连接会话。但是记住每个会话的编号并不容易,当然,我们在新建会话时可以指定一个名字,以便于记忆:

tmux new -s mysession

或者:

tmux new-session -s mysession

使用快捷键 prefix + d 可以暂时离开当前会话,如果要再次连接以前的某个会话,可以用如下命令:

tmux attach -t <session-name>

或者:

tmux attach-session -t <session-name>

或者简写成:

tmux a -t <session-name>

要杀掉会话,可以用如下命令:

tmux kill-session -t <session-name>

或者杀死所有会话:

tmux kill-server

常用命令

  • 信息查询:

    • tmux list-keys 列出所有可以的快捷键和其运行的 tmux 命令
    • tmux list-commands 列出所有的 tmux 命令及其参数
    • tmux info 列出所有的 session, window, pane, 运行的进程号,等。
  • 会话控制:

    • tmux new -s session_name 创建一个叫做 session_name 的 tmux session
    • tmux attach -t session_name 重新开启叫做 session_name 的 tmux session
    • tmux switch -t session_name 转换到叫做 session_name 的 tmux session
    • tmux list-sessions / tmux ls 列出现有的所有 session
    • tmux detach 离开当前开启的 session
    • tmux kill-server 关闭所有 session
  • 窗口控制:

    • tmux new-window 创建一个新的 window
    • tmux list-windows 列出所有的 window
    • tmux select-window -t :0-9 根据索引转到该 window
    • tmux rename-window 重命名当前 window
  • 窗格控制:

    • tmux split-window 将 window 垂直划分为两个 pane
    • tmux split-window -h 将 window 水平划分为两个 pane
    • tmux swap-pane -[UDLR] 在指定的方向交换 pane
    • tmux select-pane -[UDLR] 在指定的方向选择下一个 pane

常用快捷键

所有快捷键的使用都必须加上命令前缀(prefix), 默认是 Ctrl+b

  • 基本操作:
命令说明
?列出所有快捷键;按q返回
d脱离当前会话,可暂时返回Shell界面
s选择并切换会话;在同时开启了多个会话时使用
D选择要脱离的会话;在同时开启了多个会话时使用
:进入命令行模式;此时可输入支持的命令,例如 kill-server 关闭所有tmux会话
[复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出
]进入粘贴模式,粘贴之前复制的内容,按q/Esc退出
~列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
t显示当前的时间
  • 窗口操作:
命令说明
c创建新窗口
&关闭当前窗口
[0-9]数字键切换到指定窗口
p切换至上一窗口
n切换至下一窗口
l前后窗口间互相切换
w通过窗口列表切换窗口
,重命名当前窗口,便于识别
.修改当前窗口编号,相当于重新排序
f在所有窗口中查找关键词,便于窗口多了切换
  • 窗格操作:
命令说明
"将当前面板上下分屏
%将当前面板左右分屏
x关闭当前分屏
!将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板
q显示面板编号
o选择当前窗口中下一个面板
{向前置换当前面板
}向后置换当前面板
z最大化当前所在面板
方向键移动光标选择对应面板
page up向上滚动屏幕,q 退出
page down向下滚动屏幕,q 退出
alt+o逆时针旋转当前窗口的面板
ctrl+o顺时针旋转当前窗口的面板
ctrl+方向键以1个单元格为单位移动边缘以调整当前面板大小
alt+方向键以5个单元格为单位移动边缘以调整当前面板大小

复制模式(copy-mode)

Tmux 的使用类似于 vim, 在窗口中要自由的复制文本,可以进入复制模式,使用 prefix + [ 进入复制模式:

  • 按 space 开始复制,移动光标选择复制区域
  • 按 Enter 复制并退出 copy-mode。
  • 将光标移动到指定位置,按 prefix + ] 粘贴

配置

Tmux 支持自定义的配置文件,/etc/tmux.conf 是全局的配置,~/.tmux.conf 是用户配置。例如 Tmux 也可以想 vim 一样使用底行命令模式,我们重新配置其快捷键跟 vim 一样使用 :,在配置文件中添加如下内容:

# bind : to command-prompt like vim
# this is the default in tmux already
bind : command-prompt

在命令行模式下可以输入 tmux 的命令来执行相关动作。

参考

© 著作权归作者所有

共有 人打赏支持
Konghy
粉丝 8
博文 22
码字总数 31889
作品 0
朝阳
程序员
私信 提问
Tmux使用手册

本文首发于CSDN网站,下面的版本又经过进一步的修订。 关于 我的博客:louis blog 掘金专栏:路易斯专栏 原文链接:Tmux使用手册 CSDN链接:程序员Tmux使用手册 - 极客头条 全文共12k字,阅读...

louiszhai
2017/10/10
0
0
tmux:打造精致与实用并存的终端

由于最近需要经常 到远程环境,遂趁此折腾了一番 。毕竟 工欲善其事,必先利其器 以下是我的配置文件地址,并在不断摸索与更新中。特别喜欢 主题,于是参考它配了状态栏的主题。在后边我会列...

shanyue
2017/01/21
0
0
使用 Tmux 强化终端功能

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多...

羽风之歌
2015/08/07
0
0
Tmux 简明指南

Tmux 简明指南 独行为僧2017-11-033 阅读 Tools Tmux 做为一利器,很早就知道了,但是一直没有搞明白其使用场景,甚至一直在以错误的方式使用。现今花点时间搞明白它。 首先就是使用场景的问...

独行为僧
2017/11/03
0
0
教你5个使Tmux终端会话更好的小技巧

tmux 是一个工具,用于在一个终端窗口中运行多个终端会话。访问和控制多个终端会话。 系统管理员可以同时运行多个命令行程序。不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入...

Linux就该这么学
03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
31分钟前
1
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
2
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
0
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部