tmux 介绍
截图
dwm + alacritty + tmux + neovim + ranger:
下载
tmux 可以说是一款 TUI 开发人员不可或缺的终端复用神器。
$ yay -S tmux
在终端输入以下命令即可进入 tmux:
$ tmux
概念
tmux 中有以下一些概念:
- server 服务
- session 会话
- window 窗口
- pone 窗格
每次输入 tmux 命令后就会启动一个 tmux 服务和 tmux 会话。
一个 tmux 会话可以有多个窗口,一个窗口可以有多个窗格。
我们最常使用的就是 tmux 中的窗口和窗格。
按键
prefix
和 vim 类似,tmux 中也有一个前缀键的概念,默认是 <c-b>
默认所有的快捷键在按下之前都必须先按下 prefix 键位才会生效。
比如:
ctrl+b w ctrl+b s
会话
按键 | 描述 |
---|---|
s | 查看所有会话 |
d | 关闭当前会话 |
$ | 重命名会话 |
窗口
按键 | 描述 |
---|---|
c | 新建窗口 |
& | 关闭窗口 |
w | 窗口列表 |
n | 下一个窗口 |
p | 上一个窗口 |
l | 上一次窗口 |
1-9 | 切换到指定窗口 |
, | 窗口重命名 |
按下 prefix & 后会提醒你是否关闭窗口,按 y 或 n 即可。
窗格
按键 | 描述 |
---|---|
% | 水平窗格 |
“ | 垂直窗格 |
x | 关闭窗格 |
; | 向上切换窗格 |
o | 向下切换窗格 |
方向 | 向上下左右移动 |
{ | 与上一个窗格交换位置 |
} | 与下一个窗格交换位置 |
c-o | 向前移动窗格位置,第一个变最后一个 |
a-o | 向后移动窗格位置 ,最后一个变第一个 |
! | 将当前窗格拆分为独立窗口 |
z | 全屏显示当前窗格,再按一次便会原来大小 |
c-方向 | 调整窗格大小 |
q | 显示窗格编号 |
配置
默认键
使用以下命令将所有 tmux 的默认按键命令导出到一个文件中,方便后期修改:
$ tmux list-keys > /tmp/tmux_default.txt
插件
tmux 和 vim 类似,都是用插件管理插件。
首先需要下载 tmux 插件管理器 tpm:
$ https://github.com/tmux-plugins/tpm.git
下载完成后使用 vim 打开 ~/.tmux.conf,并且按下大 G。
按下 i 并填入以下内容,安装我微调之后的 tmux-power 或原本 tmux-power 状态栏插件。
$ set -g @plugin 'askify/tmux-power' run '~/.tmux/plugins/tpm/tpm'
添加完成后重新运行 tmux 服务,然后按下快捷键即可下载插件:
prefix + I : 下载插件 prefix + U : 更新插件 prefix + alt + u:卸载插件(需要将插件从 ~/.tmux.conf 文件中注释)
下载完成的插件都在 ~/.tmux/plugins/ 目录中。
我的配置
下面是我的 tmux 配置,对原本某些按键做了修改,让其更符合我个人的使用习惯:
# support mouse set -g mouse on # overtime time : ms set -sg escape-time 1 # start window index set -g base-index 1 # start pane index setw -g pane-base-index 1 # == reload == bind r source-file ~/.tmux.conf /; display-message "~/.tmux.conf reloaded." # == leader == unbind C-b set -g prefix C-t # == unbind == unbind d unbind & unbind '"' unbind % unbind C-s unbind C-v unbind C-u unbind C-d unbind C-k unbind C-j unbind C-h unbind C-l unbind k unbind j unbind h unbind l unbind f unbind q unbind t unbind Tab unbind p unbind n unbind c # == pane == # split bind C-s splitw -v bind C-v splitw -h # swap bind C-u rotate-window bind C-d rotate-window -D # select bind C-k selectp -U bind C-j selectp -D bind C-h selectp -L bind C-l selectp -R # full screen bind c-f resize-pane -Z # close bind c-q kill-pane # resize bind k resizep -U 10 bind j resizep -D 10 bind h resizep -L 10 bind l resizep -R 10 # == window == bind t new-window bind Tab last-window bind p previous-window bind n next-window bind c kill-window # == theme == # follow terminal color set -g status-style bg=default # status bar position set -g status-position bottom set -g @tmux_power_theme '#87D7FF' # == plugin == set -g @plugin 'askify/tmux-power' run '~/.tmux/plugins/tpm/tpm'