Tmux基础

介绍

技术 特性 适用场景 说明
Tmux - 提供了强劲的、易于使用的命令行界面
- 可横向和纵向分割窗口
- 窗格可以自由移动和调整大小,或直接利用四个预设布局之一
- 支持 UTF-8 编码及 256 色终端
- 可在多个缓冲区进行复制和粘贴
- 可通过交互式菜单来选择窗口、会话及客户端
- 支持跨窗口搜索
- 支持自动及手动锁定窗口
- 终端复用 - Github
- Wiki

安装

MAC

1
$ brew install tmux

CentOS-yum安装

1
$ yum install -y tmux

CentOS-编译安装

1
2
3
4
5
6
7
$ yum install libevent libevent-devel ncurses-devel
$ cd /usr/local
$ wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz
$ tar -zvxf tmux-2.3.tar.gz
$ cd tmux-2.3
$ ./configure
$ make && make install

Ubuntu

1
$ sudo apt-get install tmux

会话管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 新建一个无名称的会话
$ tmux

# 新建一个名称为blog的会话
$ tmux new -s blog

##### 断开当前会话 #####
# 方式一
$ tmux detach
# 方式二
# ctrl+d
## 方式三
$ exit

##### 进入名称为blog的会话 #####
# 方式一
$ tmux attach -t blog
# 方式二
$ tmux a -t blog

# 进入第一个会话
$ tmux a

# 关闭名称为blog的会话
$ tmux kill-session -t blog

# 关闭服务器,所有的会话都将关闭
$ tmux kill-server

##### 查看所有的会话 #####
# 方式一
$ tmux list-session
# 方式二
$ tmux ls

配置

启用鼠标滚动

按完前缀ctrl+B后,再按冒号:进入命令行模式,输入以下命令:

1
$ set -g mouse on

配置会话保存

1
2
3
4
5
6
7
8
9
10
$ cd ~/
$ mkdir .tumx
$ cd .tumx
$ mkdir plugins
$ cd plugins
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
$ vi ~/.tumx.config
##### 增加内容开始 #####
run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux
##### 增加内容结束 #####

按下prefix + r重载tmux配置。

快捷键 说明
prefix + Ctrl + s 保存
prefix + Ctrl + r 恢复

配置示例

修改~/.tmux.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#-- base --#
set -g default-terminal "screen-256color"
set -g display-time 3000
set -g history-limit 10000
set -g base-index 1
set -g pane-base-index 1
set -s escape-time 0
# 开启鼠标复制(按住 option 键就用直接用鼠标选择文字)
set -g mouse on
#-- bindkeys --#
# split windows like vim. - Note: vim's definition of a horizontal/vertical split is reversed from tmux's
unbind s
bind s split-window -v
bind S split-window -v -l 40
bind v split-window -h
bind V split-window -h -l 120
# navigate panes with hjkl
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# key bindings for horizontal and vertical panes
unbind %
bind | split-window -h # 使用|竖屏,方便分屏
unbind '"'
bind - split-window -v # 使用-横屏,方便分屏
# swap panes
bind ^u swapp -U
bind ^d swapp -D
bind q killp
bind ^e last
unbind r
bind r source-file ~/.tmux.conf \; display "Configuration Reloaded!"
#-- statusbar --#
set -g status-justify centre
set -g status-left "#[fg=red]s#S:w#I.p#P#[default]"
set -g status-right '[#(whoami)#(date +" %m-%d %H:%M ")]'
set -g status-left-attr bright
set -g status-left-length 120
set -g status-right-length 120
set-option -gq status-utf8 on
set -g status-interval 1
set -g visual-activity on
setw -g monitor-activity on
setw -g automatic-rename off
# default statusbar colors
set -g status-bg colour235 #base02
set -g status-fg colour136 #yellow
set -g status-attr default
# default window title colors
setw -g window-status-fg colour244
setw -g window-status-bg default
#setw -g window-status-attr dim
# active window title colors
setw -g window-status-current-fg colour166 #orange
setw -g window-status-current-bg default
#setw -g window-status-current-attr bright
# window title string (uses statusbar variables)
set -g set-titles-string '#T'
set -g status-justify "centre"
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
# pane border
set -g pane-active-border-fg '#55ff55'
set -g pane-border-fg '#555555'
# message text
set -g message-bg colour235 #base02
set -g message-fg colour166 #orange
# pane number display
set -g display-panes-active-colour colour33 #blue
set -g display-panes-colour colour166 #orange
# clock
setw -g clock-mode-colour colour64 #green
# 修改进入命令模式按键
# remap prefix to Control + a
# set -g prefix C-a
# unbind C-b
# bind C-a send-prefix

快捷指令

系统指令

前缀 指令 说明
Ctrl+b ? 显示快捷键帮助文档
Ctrl+b d 断开当前会话
Ctrl+b D 选择要断开的会话
Ctrl+b Ctrl+z 挂起当前会话
Ctrl+b r 强制重载当前会话
Ctrl+b s 显示会话列表用于选择并切换
Ctrl+b : 进入命令行模式,此时可直接输入ls等命令
Ctrl+b [ 进入复制模式,按q退出
Ctrl+b ] 粘贴复制模式中复制的文本
Ctrl+b ~ 列出提示信息缓存

窗口指令

前缀 指令 说明
Ctrl+b c 新建窗口
Ctrl+b & 关闭当前窗口(关闭前需输入y or n确认)
Ctrl+b 0~9 切换到指定窗口
Ctrl+b p 切换到上一窗口
Ctrl+b n 切换到下一窗口
Ctrl+b w 打开窗口列表,用于且切换窗口
Ctrl+b , 重命名当前窗口
Ctrl+b . 修改当前窗口编号(适用于窗口重新排序)
Ctrl+b f 快速定位到窗口(输入关键字匹配窗口名称)

面板指令

前缀 指令 说明
Ctrl+b " 当前面板上下一分为二,下侧新建面板
Ctrl+b % 当前面板左右一分为二,右侧新建面板
Ctrl+b x 关闭当前面板(关闭前需输入y or n确认)
Ctrl+b z 最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增)
Ctrl+b ! 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)
Ctrl+b ; 切换到最后一次使用的面板
Ctrl+b q 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板
Ctrl+b { 向前置换当前面板
Ctrl+b } 向后置换当前面板
Ctrl+b Ctrl+o 顺时针旋转当前窗口中的所有面板
Ctrl+b 方向键 移动光标切换面板
Ctrl+b o 选择下一面板
Ctrl+b 空格键 在自带的面板布局中循环切换
Ctrl+b Alt+方向键 以5个单元格为单位调整当前面板边缘
Ctrl+b Ctrl+方向键 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)
Ctrl+b t 显示时钟

参考

坚持原创技术分享,您的支持将鼓励我继续创作!
0%