Mac 终端管理神器 iTerm 也可以很好的多标签页面和分割窗口工作,而 Tmux 最大的好处
是可以离线后可以储存窗口布局和使用状态,在 SSH 环境下尤其有帮助

安装

Mac

1
$ brew install tmux

Centos

1
$ yum install tmux

使用

Session

1
2
3
4
5
6
7
tmux [new -s session-name]                      # 创建session,并命名,默认创建一个无名会话
tmux rename-session [-t target-name] new-name # 修改session名字,-t target-name 不是必传,默认当前链接 session
tmux (attach, a, at) [-t session-name] # 打开指定session,默认上次访问会话
tmux switch -t <session_name> # 转换到指定session
tmux (list-sessions, ls) # 列出所有session
tmux detach # 退出当前session
tmux kill-session [-t session-name] # 删除指定会话,默认删除上次访问会话

windows

1
2
3
4
tmux new-window                             # 创建一个新的 window
tmux select-window -t (0-9) # 根据索引转到该 window
tmux rename-window # 重命名当前 window
tmux kill-window [-t window-name] # 删除窗口

Panes

1
2
3
4
5
tmux split-window        # 将 window 垂直划分为两个 pane
tmux split-window -h # 将 window 水平划分为两个 pane
tmux swap-pane -[UDLR] # 在指定的方向交换 pane
tmux select-pane -[UDLR] # 在指定的方向选择下一个 pane
tmux select-pane -t :.+ # 选择按数字顺序的下一个 pane

其他

1
2
3
4
5
6
7
8
9
10
11
tmux list-keys
# 列出所有可以的快捷键和其运行的 tmux 命令

tmux list-commands
# 列出所有的 tmux 命令及其参数

tmux info
# 流出所有的 session, window, pane, 运行的进程号,等。

tmux source-file ~/.tmux.conf
# 重新加载当前的 tmux 配置(基于一个默认的 tmux 配置)

prefix 快捷键

基础操作

1
2
3
4
5
6
7
8
9
10
11
?	列出所有快捷键;按q返回
d 脱离当前会话,可暂时返回Shell界面,输入tmux attach能够重新进入之前会话
s 选择并切换会话;在同时开启了多个会话时使用
$ 重命名 session
D 选择要脱离的会话;在同时开启了多个会话时使用
: 进入命令行模式;此时可输入支持的命令,例如kill-server所有tmux会话
[ 复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出
] 进入粘贴模式,粘贴之前复制的内容,按q/Esc退出
~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
t 显示当前的时间
Ctrl+z 挂起当前会话

窗口操作

1
2
3
4
5
6
7
8
9
10
c       # 创建新窗口
& # 关闭当前窗口
[0-9] # 切换窗口
p # 切换至上一窗口
n # 切换至下一窗口
l # 前后窗口间互相切换
w # 通过窗口列表切换窗口
, # 重命名当前窗口,便于识别
. # 修改当前窗口编号,相当于重新排序
f # 在所有窗口中查找关键词,便于窗口多了切换

面板操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"           # 将当前面板上下分屏
% # 将当前面板左右分屏
x # 关闭当前分屏
! # 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板
Ctrl+方向键 # 以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键 # 以5个单元格为单位移动边缘以调整当前面板大小
空格键 # 可以在默认面板布局中切换,试试就知道了
q # 显示面板编号
o # 选择当前窗口中下一个面板
方向键 # 移动光标选择对应面板
{ # 向前置换当前面板
} # 向后置换当前面板
Alt+o # 逆时针旋转当前窗口的面板
Ctrl+o # 顺时针旋转当前窗口的面板
z #tmux 1.8新特性,最大化当前所在面板

配置文件

Tmux 可以在 ~/.tmux.conf/etc/.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
# 改变 prefix 快捷键为 <C-a>
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 绑定重新加载 ~/.tmux.conf 的快捷键
bind r source-file ~/.tmux.conf ; display-message "Config reloaded.."

set -g default-terminal "screen-256color" # use 256 colors
set -g display-time 5000 # status line messages display
set -g history-limit 100000 # scrollback buffer n lines
set -g base-index 1 # 窗口索引从1开始,默认是0
set -g pane-base-index 1
setw -g mode-keys vi # use vi in copy mode
# set-option -g default-shell $SHELL

# 美化状态栏
set-option -g status on
set-option -g status-interval 2
set-option -g status-justify "centre"
set-option -g status-left-length 60
set-option -g status-right-length 90
set-option -g status-left "#(~/WebstormProjects/wxnacy.github.io/shells/tmux/plugin/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/WebstormProjects/wxnacy.github.io/shells/tmux/plugin/tmux-powerline/powerline.sh right)"
set-window-option -g window-status-current-format "#[fg=colour235, bg=colour27]⮀#[fg=colour255, bg=colour27] #I ⮁ #W #[fg=colour27, bg=colour235]⮀"



# 分割窗口
unbind '"'
bind - splitw -v # 垂直分割
unbind %
bind | splitw -h # 水平分割


# 选择面板,更符合 Vim 习惯
bind k selectp -U
bind j selectp -D
bind h selectp -L
bind l selectp -R

# 使用 X 关闭 window
unbind &
bind X killw

参考文献

03-16 16:09