-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
203 lines (161 loc) · 7.15 KB
/
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# ------------------
# 1.tmux常用终端配置
# ------------------
# 设置默认的终端类型
set-option -g default-shell /bin/zsh
# 开启鼠标支持
set-option -g mouse on
# 窗口号和窗口分割号都以1开始
set -g base-index 1 # 设置窗口的起始下标为1
set -g pane-base-index 1 # 设置面板的起始下标为1
# 设置状态栏左部/右部宽度
set -g status-left-length 40
set -g status-right-length 80
# 监视窗口内容变动进行提示
set -g visual-activity on
setw -g monitor-activity on
# 设置状态栏右边内容
set -g status-right '#{prefix_highlight} #{cpu_bg_color} CPU:#{cpu_percentage} #{cpu_icon} |#{battery_status_bg} Cell:#{battery_percentage} | %a %Y-%m-%d %H:%M '
# ------------------
# 2.tmux扩展终端配置
# ------------------
# 加载扩展配置插件
set -g @plugin 'tmux-plugins/tmux-sensible'
# 解决vim模式切换延迟
set -s escape-time 0
# 增加回滚缓冲区大小
set -g history-limit 50000
# tmux消息显示4秒钟
set -g display-time 4000
# 实时更新左右状态栏状态
set -g status-interval 5
# 启用终端256真色配置
set -g default-terminal "screen-256color"
# 为支持它们的终端启用了焦点事件
set -g focus-events on
# 使用分组会话和多显示器设置时非常有用
setw -g aggressive-resize on
# 使用<prefix+Ctrl+n>/<prefix+Ctrl+p在窗口之间切换
bind C-p previous-window
bind C-n next-window
# ----------------------
# 3.tmux自定义快捷键配置
# ----------------------
# 方向新增面板新增面板
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 水平方向分屏
unbind %
bind = splitw -h -c '#{pane_current_path}' # 垂直方向分屏
# 选择窗口功能修改为"符号
bind "\"" choose-window
# 绑定m键为在新的panel打开man
bind m command-prompt "splitw -h 'exec man %%'"
# 绑定快捷键为r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded ..."
# 快速面板切换
# 绑定hjkl键来调整选择的面板位置快捷键
bind -r k select-pane -U # 绑定k为↑
bind -r j select-pane -D # 绑定j为↓
bind -r h select-pane -L # 绑定h为←
bind -r l select-pane -R # 绑定l为→
bind -r e lastp # 绑定e为选择最后一个面板
bind -r ^e last # 绑定Ctrl+e为选择最后一个窗口
bind -r ^u swapp -U # 绑定Ctrl+u为与前一个面板交换位置
bind -r ^d swapp -D # 绑定Ctrl+d为与后一个面板交换位置
# 面板大小调整
# 绑定Ctrl+hjkl键为面板上下左右调整边缘的快捷指令
bind -r ^k resizep -U 5 # 绑定Ctrl+k为往↑调整面板边缘5个单元格
bind -r ^j resizep -D 5 # 绑定Ctrl+j为往↓调整面板边缘5个单元格
bind -r ^h resizep -L 5 # 绑定Ctrl+h为往←调整面板边缘5个单元格
bind -r ^l resizep -R 5 # 绑定Ctrl+l为往→调整面板边缘5个单元格
# 快捷创建临时窗口
unbind u
bind u new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp # 创建一个临时的新窗口
unbind n
bind n last-window \; swap-pane -s tmp.1 \; kill-window -t tmp # 删除新创建的临时窗口
# ------------------
# 4.tmux复制模式配置
# ------------------
# 更改复制模式的默认行为为熟悉的vi风格
# tmux中复制模式通常使用复制模式的步骤如下:
# 1. 输入 <[> 进入复制模式
# 2. 按下 <空格键> 开始复制,移动光标选择复制区域
# 3. 按下 <回车键> 复制选中文本并退出复制模式
# 4. 按下 <]> 粘贴文本
# 开启vi风格后,支持vi的C-d、C-u、hjkl等快捷键
setw -g mode-keys vi
# 存在于tmux进程中的buffer缓存,虽然可以在会话间共享,但不能直接与系统粘贴板共享,不免有些遗憾
# 我们都知道,Mac自带pbcopy和pbpaste命令,分别用于复制和粘贴,但在tmux命令中它们却不能正常运行
# 我们可以使用一个包装程序reattach-to-user-namespace来重新连接到合适的命名空间,然后执行访问用户级命名空间的粘贴板服务
# 加载复制插件
# 1. 将命令行文本复制到剪贴板 <prefix+y>
# 2. 将当前面板的工作目录复制到剪贴板 <prefix+Y>
set -g @plugin 'tmux-plugins/tmux-yank'
# 配置开启剪贴板功能
set -g set-clipboard on
set-option -g default-command "reattach-to-user-namespace -l $SHELL"
# ------------------
# 5.tmux会话保持配置
# ------------------
# tmux保存会话依赖于tmux进程,因此关机重启后会话将被清空
# 目前有resurrect和continuum两个插件可以持久保存用户会话
# 无须任何配置就能够备份tmux会话中的各种细节,包括窗口、面板的顺序、布局、工作目录,运行程序等等数据
# 1. 保存的快捷键: <prefix + Ctrl-s> tmux状态栏在保存开始
# 2. 恢复的快捷键: <prefix + Ctrl-r> tmux状态栏在恢复开始
# 保存时,tmux会话的详细信息会以文本文件的格式保存到~/.tmux/resurrect目录,恢复时则从此处读取
# 由于数据文件是明文的,因此你完全可以自由管理或者编辑这些会话状态文件,如果备份频繁记得定期清除历史备份
set -g @plugin 'tmux-plugins/tmux-resurrect'
# set -g @plugin 'tmux-plugins/tmux-continuum'
# 重载vim/neovim会话
# set -g @resurrect-strategy-vim 'session'
# set -g @resurrect-strategy-nvim 'session'
# set -g @continuum-restore 'on'
# set -g @resurrect-capture-pane-contents 'on'
# --------------
# 6.tmux快速搜索
# --------------
# 其中copycat搜索插件支持正则表达式搜索/搜索结果高亮/预定义搜索
# 正则格式搜索: <prefix+/>
# 搜索结果高亮: 使用grep命令搜索且搜索不区分大小写
# 预定义的搜索:
# 1. 文件搜索 <prefix+ctrl-f>
# 2. URL搜索 <prefix+ctrl-u>
# 3. 数字搜索 <prefix+ctrl-d>
# 4. IP地址搜索 <prefix+alt-i>
# 当然可以使用n/N进行高亮选择进行一个个的跳转
set -g @plugin 'tmux-plugins/tmux-copycat'
# ----------------
# 7.tmux插件的使用
# ----------------
# 插件的安装/更新/卸载
# install:<prefix+I> update:<prefix+U> remove:<prefix+alt+u>
set -g @plugin 'tmux-plugins/tpm'
# 抽出屏幕中的URL链接信息
# 在面板中显示所有URL链接地址: <prefix+p>
set -g @plugin 'tmux-plugins/tmux-urlview'
set -g @urlview-key 'p'
# 文件目录树
# 切换到侧栏的目录树: <prefix+Tab>
# 光标移动到侧边栏上: <prefix+Backspace>
set -g @plugin 'tmux-plugins/tmux-sidebar'
# 在右侧状态栏中展示电池和CPU信息
# cpu extension plugin
set -g @plugin 'tmux-plugins/tmux-cpu'
# cell extension plugin
set -g @plugin 'tmux-plugins/tmux-battery'
# show tmux prefix highlight
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
# 其他有用的插件(默认未启用)
# 1.方便进行面板切换
# set -g @plugin 'tmux-plugins/tmux-pain-control'
# set-option -g @pane_resize "5"
# 2.记录窗口信息输出
# set -g @plugin 'tmux-plugins/tmux-logging'
# 3.文件差异比较
# set -g @plugin 'jbnicolai/tmux-fpp'
# 4.用于快速打开突出显示的文件或URL
# set -g @plugin 'tmux-plugins/tmux-open'
# 5.显示网卡网速插件
# set -g @net_speed_interfaces "eth0 eth1"
# keep this line at the very bottom of tmux.conf
run '~/.tmux/plugins/tpm/tpm'