Tmux 简介与使用

Tmux 是一个用于在终端窗口中运行多个终端会话的工具,即终端复用软件(terminal multiplexer)。在 Tmux 中能够根据不一样的工做任务建立不一样的会话,每一个会话又能够建立多个窗口来完成不一样的工做,每一个窗口又能够分割成不少小窗口。这些功能都是很是实用的。html

Tmux 的多窗口和窗口分割并非它吸引的我缘由,对于这一点我能够有另一个终端工具代替,即 Terminator。使用 Tmux 最大的益处在于,远程 SSH 访问服务器进行工做时。即便非正常掉线,它能保存当前工做状态,并保证当前任务继续运行。这一点对于远程 SSH 工做的人来讲是很是重要的。远程 ssh 工做时,Tmux 的多会话、多窗口、多面板的益处才充分体现了出来。使用 Tmux 就没必要开启多个标签链接多个 ssh 了,全部工做在一个 ssh 链接上就搞定了,也没必要担忧忽然掉线后工做丢失。git

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

会话, 窗口, 窗格

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

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

  • server 服务器:输入 tmux 命令时就开启了一个服务器,服务器因为管理多个会话。
  • session 会话:一个服务器能够包含多个会话,能够理解成是一个特定的终端组合,一般将同一任务下的工做放到一个会话中。
  • window 窗口:一个会话能够包含多个窗口,一个窗口就至关于普通终端的一个标签,一般在不一样的窗口中完成不一样的工做。
  • pane 窗格:一个窗口能够被分割成多个小的窗格。

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

安装

在 Mac OS 中安装:服务器

$ brew install tmuxsession

在 Ubuntu 中安装:ssh

sudo apt-get install tmuxide

或者下载源码编译安装: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 的命令来执行相关动做。

参考

相关文章
相关标签/搜索