Tmux使用

tmux是一种终端多路复用器:它能够创建多个终端, 从单一屏幕访问和控制。

tmux可以从 屏幕并继续在后台运行,然后重新连接。

快捷键

一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用(注:⌃ 为 Mac 的 control 键)


启动

启动新会话

1
tmux [new -s 会话名 -n 窗口名]

恢复会话

1
tmux a [-t 会话名]

列出所有会话

1
tmux ls

关闭所有会话

1
tmux kill-session -t 会话名

关闭tmux

1
tmux kill-server # 删除所有的会话

关闭所有会话:

1
tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill

会话

1
2
3
4
:new<回车>   启动新会话
s 列出所有会话
$ 重命名当前会话
d 暂时脱离会话

窗口

1
2
3
4
5
6
7
8
9
c  		创建新窗口
w 列出所有窗口(所有会话)
n 后一个窗口
p 前一个窗口
f 查找窗口
, 重命名当前窗口
. 修改当前编号
& 关闭当前窗口
数字 切换窗口

窗格

1
2
3
4
5
6
7
8
9
10
%  			垂直分割
" 水平分割
o 旋转窗格
x 关闭窗格
空格 左边这个符号代表空格键 - 切换布局
q 显示每个窗格编号
! 当前面板使用新窗口显示
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
z 切换窗格最大化/最小化

调整窗格尺寸

1
2
3
4
5
6
:resize-pane -D          当前窗格向下扩大 1 格
:resize-pane -U 当前窗格向上扩大 1 格
:resize-pane -L 当前窗格向左扩大 1 格
:resize-pane -R 当前窗格向右扩大 1 格
:resize-pane -D 20 当前窗格向下扩大 20 格
:resize-pane -t 2 -L 20 编号为 2 的窗格向左扩大 20 格

杂项:

1
2
3
4
5
6
7
8
9
d  退出 tmux(tmux 仍在后台运行)
D 选择脱离会话
C-z 挂起当前会话
r 强制重绘未脱离会话
s 选择切换的会话
t 窗口中央显示一个数字时钟
? 列出所有快捷键
: 命令提示符
C-d 关闭当前窗格

复制模式

设置复制模式中的默认键盘布局;可以设置为viemacs,我是把这个设置写入了配置文件。

1
2
set-window-option -g mode-keys vi #可以设置为vi或emacs
set-window-option -g utf8 on #开启窗口的UTF-8支持

tmux复制模式的命令表:

方法 vi emacs
开始选择 space C-space
行开始 0 C-a
行结尾 $ C-e
向前搜索 / C-s
向后搜索 ? C-r
继续搜索 n n
滚动条上 C-Up C-Up
滚动条下 C-Down / J C-Down
滚动上半页 C-u M-Up
滚动下半页 C-d M-Down
下一页 C-f PageDown
上一页 C-b Page Up
下个单词 w M-f
上个单词 p C-y
退出 q Esc
清除选择 Esc C-g
复制选择 Enter M-w
光标左移 h Left
光标右移 l Right
光标下移 j Down
光标上移 k Up
跳转 : g

复制模式步骤:

  1. prefix + [ 进入复制模式
  2. 参考上表移动鼠标到要复制的区域,移动鼠标时可用vim的搜索功能”/“,”?”
  3. 安空格键开始选择复制区域
  4. 选择完成后安enter键退出
  5. prefex + ] 粘贴

参考配置文件(~/.tmux.conf):

下面这份配置是我使用 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
35
36
37
38
39
40
41
42
43
44
45
# -----------------------------------------------------------------------------
# Tmux 基本配置 - 要求 Tmux >= 2.3
# 如果不想使用插件,只需要将此节的内容写入 ~/.tmux.conf 即可
# -----------------------------------------------------------------------------

# C-b 和 VIM 冲突,修改 Prefix 组合键为 Control-Z,按键距离近
set -g prefix C-z

set -g base-index 1 # 窗口编号从 1 开始计数
set -g display-panes-time 10000 # PREFIX-Q 显示编号的驻留时长,单位 ms
set -g mouse on # 开启鼠标
set -g pane-base-index 1 # 窗格编号从 1 开始计数
set -g renumber-windows on # 关掉某个窗口后,编号重排

setw -g allow-rename off # 禁止活动进程修改窗口名
setw -g automatic-rename off # 禁止自动命名新窗口
setw -g mode-keys vi # 进入复制模式的时候使用 vi 键位(默认是 EMACS)

# -----------------------------------------------------------------------------
# 使用插件 - via tpm
# 1. 执行 git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 2. 执行 bash ~/.tmux/plugins/tpm/bin/install_plugins
# -----------------------------------------------------------------------------

setenv -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins'

# 推荐的插件(请去每个插件的仓库下读一读使用教程)
set -g @plugin 'seebi/tmux-colors-solarized'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tpm'

# tmux-resurrect
set -g @resurrect-dir '~/.tmux/resurrect'

# tmux-prefix-highlight
set -g status-right '#{prefix_highlight} #H | %a %Y-%m-%d %H:%M'
set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_copy_mode_attr 'fg=white,bg=blue'

# 初始化 TPM 插件管理器 (放在配置文件的最后)
run '~/.tmux/plugins/tpm/tpm'

插件

  • 插件管理 tpm

  • 常用配置tmux-sensible

  • 复制文本到剪切板tmux-yank

  • prefix按下快捷键高亮tmux-prefix-highlight

  • 面板管理快捷键tmux-pain-control

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    prefix + h 		选择左边
    prefix + l 选择右边
    prefix + j 选择下面
    prefix + l 选择上面
    prefix + 箭头 选择箭头方向

    prefix + | 水平分隔
    prefix + - 上下分隔
    prefix + \ 水平分隔(大屏)
    prefix + _ 上下分隔(大屏)
  • 缓冲恢复tmux-resurrect

    1
    2
    prefix + Ctrl-s  保存
    prefix + Ctrl-r 恢复
 上一篇

io netty 网络通讯