Too young, too simple. Sometimes, naive & stupid

Tmux之道

tmux对控制台而言,桌面对GUI应用而言,这是本文维度内的世界。在tmux中,可以:

  • 在终端内部执行多任务,运行多个应用程序。
  • 在同一窗口中有多个命令行(窗格)。
  • 工作区(会话)中有多个窗口(窗口)。
  • 在多个工作区之间切换,例如虚拟桌面。

思考TMUX

基于文本的窗口管理器

多路复用器 “桌面”-说
复用器 多任务 同时进行多个应用程序。
届会 桌面 应用程序在这里可见
窗口 虚拟桌面或应用程序 拥有自己屏幕的台式机
窗格 应用 执行操作

  • 1个服务器。
    • 有一个或更多会话。
      • 有一个或更多Window。
        • 有一个或更多Pane。

CLI Power

通过将一个终端分成多个终端,可以在同一屏幕上运行多个应用程序或终端。

一个屏幕可以用于编辑文件,另一个用户tail -F日志文件。

tmux支持任意数量的终端。

可以在创建的窗口之间切换。

然后恢复一切

可以让tmux和所有应用程序运行(分离),注销,做一个三明治,然后重新(附加),所有应用仍在运行!

管理工作流程

  • 系统管理员监控日志和服务。
  • 程序员喜欢在附近使用cli打开编辑器。

可以在tmux会话内部启动运行在远程服务器上的应用程序,将它们分离,然后在下一次重新绑定到您的思路和工作。

多任务处理,保留您的想法。

安装TMUX

tmux打包在大多数Linux和BSD系统上。

要获得有关如何在系统上安装tmux的最新结果,请执行“如何在上安装tmux”,因为方向会有所变化,并且在发行版之间略有不同。

本文档是针对版本1.8编写的。重要的是,您必须拥有最新的稳定版tmux。可在tmux主页上查看最新的稳定版本。

Mac OS X用户可以通过MacPortsfinkHomebrew(aka brew)安装最新的tmux稳定版本 。

如果从源代码编译,则依赖项为libeventncurses

使用TMUX

开始一个新的会话

1
tmux

这就是是您进入tmux会话所需要的全部。

前缀键

Tmux热键必须以特殊方式按下。请仔细阅读,然后自己尝试。

首先,按住前缀键。默认是ctrl + b

然后停下来。不到一秒钟,键入下一步。

C-b o表示: 同时按住ctrl + b。释放,然后按o

记住,前缀+快捷键!

会话名称

会话可以在创建时命名。

1
tmux new-session [-s session-name]

创建后可以重命名:

1
tmux rename-session <session-name>

快捷键是:ctrl + b$

窗口名称

Windows可以在创建时命名。

1
tmux new-window [-n window-name]

创建后可以重命名windows。

1
tmux rename-window <new-name>

快捷键是:ctrl + b,

创建新的窗口

1
tmux new-window [-n window-name]

快捷键是:ctrl + bc

遍历窗口

按号码:

1
tmux select-window

下一个:

1
tmux next-window

前一个:

1
tmux  previous-window

最后一个:

1
tmux last-window
快捷键 动作
ctrl + bn 转到下一个窗口。
ctrl + bp 转到上一个窗口。
ctrl + bw 交互选择当前窗口。
ctrl + b0-9 选择窗口0到9。
ctrl + bM-n 使用铃声或活动标记移动到下一个窗口。
ctrl + bM-p 使用铃声或活动标记移到上一个窗口。

移动窗口

移动窗口:

1
tmux move-window [-t dst-window]

交换窗口:

1
tmux swap-window [-t dst-window]

ctrl + b.

移动窗格

1
tmux move-pane [-t dst-pane]

ctrl + b{}

遍历窗格

在窗格之间移动的快捷方式:

1
2
tmux last-window
tmux next-window

ctrl + b

杀掉窗口

1
tmux kill-window [-t target-window]

ctrl + b&

杀掉窗格

1
tmux kill-pane [-t target-pane]

ctrl + bx

分隔窗口为窗格

1
tmux split-window [-c start-directory] <shell-command>

tmux窗口可以分为多个窗格。

ctrl + b%

配置TMUX

tmux可以通过~/.tmux.conf配置文件进行配置。

vi样式复制和粘贴

1
2
3
4
# VI copypaste mode
set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

积极调整客户端大小

1
setw -g aggressive-resize on

刷新配置

绑定快捷键:ctrl + br

1
bind r source-file ~/.tmux.conf \; display-message "Config reloaded."

状态栏

mux允许配置状态行,以显示stdout应用程序的系统信息,窗口列表,甚至管道。

您可以将bash命令传递到tmux状态行,例如:

1
$(shell-command)

因此,如果将/usr/local/bin/tmux-mem-cpu-load stats 输出到stdout,则将$(tmux-mem-cpu-load)第一行输出到状态栏,间隔由status-interval决定:

1
set -g status-interval 1

快捷键

捷径 行动
b 将前缀密钥(Cb)发送到应用程序。
o 向前旋转当前窗口中的窗格。
z 挂起tmux客户端。
! 将当前窗格移出窗口。
" 将当前窗格分为两个,顶部和底部。
# 列出所有粘贴缓冲区。
$ 重命名当前会话。
% 将当前窗格分为左右两部分。
& 杀死当前窗口。
' 提示选择窗口索引。
, 重命名当前窗口。
- 删除最近复制的文本缓冲区。
. 提示输入索引以移动当前窗口。
0 to 9 选择窗口0到9。
: 输入tmux命令提示符。
; 移至先前活动的窗格。
= 从列表中选择要交互式粘贴的缓冲区。
? 列出所有键绑定。
D 选择要分离的客户端。
[ 进入复制模式以复制文本或查看历史记录。
] 粘贴最近复制的文本缓冲区。
c 创建一个新窗口。
d 分离当前客户端。
f 提示在打开的窗口中搜索文本。
i 显示有关当前窗口的一些信息。
l 移至先前选择的窗口。
n 转到下一个窗口。
o 选择当前窗口中的下一个窗格。
p 转到上一个窗口。
q 简要显示窗格索引。
r 强制重画连接的客户端。
s 以交互方式为连接的客户端选择一个新会话。
L 将连接的客户端切换回上一个会话。
t 显示时间。
w 交互选择当前窗口。
x 杀死当前窗格。
{ 将当前窗格与上一个窗格交换。
} 将当前窗格与下一个窗格交换。
~ 显示来自tmux的先前消息(如果有)。
Page Up 进入复印模式并向上滚动一页。
Up, Down 切换到上方,下方,左侧或左侧的窗格
Left, Right 当前窗格的右侧。
M-1 to M-5 将窗格按以下五个预设布局之一进行排列:水平,偶数垂直,水平,主垂直或平铺。
M-n 使用铃声或活动标记移动到下一个窗口。
M-o 向后旋转当前窗口中的窗格。
M-p 使用铃声或活动标记移到上一个窗口。
C-Up, C-Down 以一个单元格为单位调整当前窗格的大小。
C-Left, C-Right
M-Up, M-Down 以五个单元格为单位调整当前窗格的大小。
M-Left, M-Right