tmux-config

前段时间,公司大佬给推荐了两个比较好用的终端复用工具 screentmux,两个都挺好用的。都可以在后台保持回话,在连接多个 ssh 时是比较方便的,同时运行多个程序的话,也可以避免在多个终端来回切换。

# 安装
我的办公电脑是自己安装的 Linuxmint,是 Ubuntu 的扩展。也是使用的 apt 做软件包管理。安装 tmux 可以使用如下命令:

1
sudo apt install tmux

配置

tmux 的配置文件在 ~/.tmux.conf。安装之后是没有这个文件的,需要自己创建。

写入配置文件

下面是我自己的配置,将其写入到 ~/.tmux.conf 中。

1
# 修改默认前缀键为 Ctrl-a 并取消原前缀键
2
set -g prefix C-a
3
unbind C-b
4
bind C-a send-prefix
5
6
# 复制模式使用 vi 键位
7
# setw -g mode-keys vi
8
9
# 窗口和面板索引从 1 开始
10
set -g base-index 1
11
set -g pane-base-index 1
12
13
# 启动鼠标支持
14
set-option -g mouse on
15
16
# 分割面板并创建新面板并设置面板 SHELL 路径为当前面板 SHELL 路径
17
bind | split-window -h -c "#{pane_current_path}"
18
bind - split-window -v -c "#{pane_current_path}"
19
20
# 使用 vi 风格进行面板间移动
21
bind h select-pane -L
22
bind j select-pane -D
23
bind k select-pane -U
24
bind l select-pane -R
25
# 设置面板大小(-r 参数指按键指令可重复 即 前缀-指令-指令-指令 可实现重复操作)
26
bind -r H resize-pane -L 5
27
bind -r J resize-pane -D 5
28
bind -r K resize-pane -U 5
29
bind -r L resize-pane -R 5
30
31
# 窗口间移动
32
bind -r C-h select-window -t :-
33
bind -r C-l select-window -t :+
34
35
# 设置默认使用 fish
36
set -g default-shell /usr/bin/fish
37
set -g default-command "fish"
38
39
# 插件列表
40
set -g @plugin 'tmux-plugins/tpm'
41
42
# 初始化 tpm ,需要在放在 .tmux.conf 文件底部
43
run '~/.tmux/plugins/tpm/tpm'

指令说明

tmux 默认的控制前缀键是 CTRL + b,但是我上面的配置文件已经将 CTRL + b 解绑改到了 CRTL + a。在使用内部指令时,先按下 CRTL + a,松开之后再按对应的指令键,就可以了。

终端指令

功能指令简写
启动服务tmux
启动服务并指定会话名和窗口名tmux new-session -s 会话名 -n 窗口名tmux new
恢复会话至最近使用会话tmux attach-sessiontmux a
恢复会话至指定会话tmux a -t 目标会话
列出所有会话tmux list-sessionstmux ls
关闭指定会话tmux kill-session -t 目标会话
关闭所有服务tmux kill-server

tmux 内部指令

内部指令的操作,需要先按下前缀键,

会话

功能指令
创建新会话:new<回车>
列出所有会话s
重命名当前会话$
退出会话(后台仍有服务,可通过 tmux a 恢复会话)d

窗口

功能指令
创建新窗口c
列出所有窗口w
跳转至下一个窗口n
跳转至上一个窗口p
查找窗口f
重命名当前窗口,
关闭当前窗口&

面板

功能指令
垂直分割当前面板并创建新面板%
水平分割当前面板并创建新面板"
切换至下一面板o
将下一面板换至当前位置Ctrl+o
显示面板号,输入对应数字可切换q
关闭当前面板x
切换面板布局空格
将当前面板左移{
将当前面板右移}
将当前面板最大化,再次使用还原z

复制模式

使用 前缀键+[ 可以进入复制模式,tmux 的复制模式默认为 emacs 风格,也可以通过配置文件设置使用 vi 模式。

设置 tmux 复制模式为 vi:在 ~/.tmux.conf 中添加配置项 setw -g mode-keys vi

功能emacsvi
开始选择Ctrl-空格空格
清除选择内容Ctrl-gESC
复制选择内容M-w回车
退出复制模式ESCq
光标左移Lefth
光标右移Rightl
光标下移Downj
光标上移Upk
光标移至首行M-RH
光标移至中间行M-rM
光标移至尾行L
移至行首Ctrl-a0
移至行尾Ctrl-e$
下一个词M-fw
上一个词M-bb
下一页Page DownCtrl-f
上一页Page UpCtrl-b
向下滚动半屏M-DownCtrl-d
向上滚动半屏M-UpCtrl-u
向下翻Ctrl-DownJ
向上翻Ctrl-UpK
向后搜索Ctrl-s/
向前搜索Ctrl-r?
继续搜索nn

其他

功能指令
面板中显示数字时钟t
列出所有快捷键?
进入命令模式:

插件

tpm

tmux 插件管理工具。

### 安装

1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

配置文件 ~/.tmux.conf 底部添加:

1
# 插件列表
2
set -g @plugin 'tmux-plugins/tpm'
3
4
# 初始化 tpm ,需要在放在 .tmux.conf 文件底部
5
run '~/.tmux/plugins/tpm/tpm'

快捷键

功能指令
安装插件Shift-i
升级插件Shift-u
卸载插件ALT-u

重新载入 tmux 配置后,安装按下 前缀键-I 即可完成 tpm 的安装,以后安装其他插件只要在插件列表下添加并进行安装操作即可。