Appearance
tmux
tmux 是 linux 中一种管理窗口的程序,它提供了一个 Session 随时存储和恢复的功能。
使用 tmux
可以做到上班时在公司服务器上写代码,下班后 detach 了当前 Session,回到家后登录服务器又 attach 了 Session。
这样在上班时的会话又恢复可用了,这时打开的文件、vim 等和公司是一样的。
软件介绍
tmux 包括会话、窗口、面板三个角色,依次为包含关系。
软件安装
使用以下命令安装 tmux,linux 与 mac 都可以使用brew进行安装
# Mac
$ brew install tmux
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedor可以使用yum/dnf/brew等方式安装,brew版本更高些
$ yum install tmux
风格设置
有个漂亮的风格,会让编程时有不一样的心情
字体图标
执行以下指令安装字体图标到系统中,有些风格需要图标时就可以正常显示了
cd
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts
使用的是 item2 需要进行以下设置
安装风格
下面介绍两款风格包
tmux-onedark-theme
大叔喜欢颜色不那么鲜艳的 tmux-onedark-theme 风格
安装方式如下
Clone 项目代码
cd git clone https://github.com/odedlaz/tmux-onedark-theme
删除原~/.tmux.conf 文件
rm ~/.tmux.conf
然后新建
~/.tmux.conf
文件添加以下内容,如果想显示完整日期就将前 2~4 行注释掉。run-shell ~/tmux-onedark-theme/tmux-onedark-theme.tmux set -g @onedark_widgets " " set -g @onedark_time_format "%I:%M " set -g @onedark_date_format "%m/%d" set-option -g status-position bottom
加载配置
tmux source-file ~/.tmux.conf
gpakosz/.tmux
tmux 的风格包很多,下面介绍 gpakosz/.tmux 风格包的安装方法
通过执行以下命令安装风格,之后通过修改 ~/.tmux.conf.local
来定义界面
cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .
重新加载 tmux 配置项以使风格生效
tmux source-file ~/.tmux.conf
快速上手
因为 tmux 命令较多,所以先掌握以下这些,用的时候再来从后面的命令中查找。
# 新建会话
tmux new -s hdcms
# 查看会话
ctrl+b s
# 重命名会话
Ctrl+b $
# 创建窗口
ctrl+b c
# 切换到2号窗口
ctrl+b 2
# 重命名窗口
ctrl+b ,
# 关闭窗口
ctrl+b &
# 水平拆分出一个新窗格
ctrl+b %
# 垂直拆分窗格
ctrl+b "
# 切换到下一个窗格
ctrl+b o
# 关闭窗格
ctrl+b x
指令列表
会话管理
会话是最大的单位,包含窗口与窗格
命令 | 说明 | 快捷键 |
---|---|---|
tmux new -s <session-name> | 创建会话 | |
tmux detach | 退出当前会话,会话进程仍然在后台运行 | Ctrl+b d |
tmux ls | 查看当前所有的 会话 | Ctrl+b s |
tmux attach -t <session-name> | 重新接入某个已存在的会话 | |
tmux kill-session | 杀死某个会话 | |
tmux switch -t <session-name> | 切换会话 | |
tmux rename-session | 重新命名会话 | Ctrl+b $ |
tmux at -d | 重绘窗口,在不同屏幕上保持窗口为最小尺寸 |
tmux 默认会同步会话到所有窗口,并使用尺寸最小窗口的尺寸,这会造成大窗口有小点。
使用以下方式来解决
tmux at -d #简写为 tmux a -d
窗口管理
窗口属于会话,窗口包含多个窗格
命令 | 说明 | 快捷键 |
---|---|---|
tmux new-window -n <window-name> | 创建新窗口 | Ctrl+b c |
tmux select-window -t <window-name> | 切换窗口 | |
tmux rename-window <new-name> | 重命名当前窗口 | Ctrl+b , |
切换窗口快捷键
快捷键 | 说明 |
---|---|
Ctrl+b p | 切换到上一个窗口(按照状态栏上的顺序) |
Ctrl+b n | 切换到下一个窗口 |
Ctrl+b <number> | 切换到指定编号的窗口,number 是状态栏上的窗口编号 |
Ctrl+b w | 从列表中选择窗口 |
ctrl+b & | 关闭当前窗口 |
ctrl+b x | 删除窗口 |
窗格管理
拆分窗格
命令 | 说明 |
---|---|
tmux split-window -h | 划分左右两个窗格 |
tmux split-window | 划分上下两个窗格 |
移动窗格
命令 | 说明 |
---|---|
tmux select-pane -U | 光标切换到上方窗格 |
tmux select-pane -D | 光标切换到下方窗格 |
tmux select-pane -L | 光标切换到左边窗格 |
tmux select-pane -R | 光标切换到右边窗格 |
tmux swap-pane -U | 当前窗格上移 |
tmux swap-pane -D | 当前窗格下移 |
窗格快捷键
快捷键 | 说明 |
---|---|
Ctrl+b % | 划分左右两个窗格 |
Ctrl+b " | 划分上下两个窗格 |
Ctrl+b ; | 切换到上一个窗格 |
Ctrl+b o | 光标切换到下一个窗格 |
Ctrl+b { | 当前窗格左移 |
Ctrl+b } | 当前窗格右移 |
Ctrl+b Ctrl+o | 当前窗格上移 |
Ctrl+b Alt+o | 当前窗格下移 |
Ctrl+b x | 关闭当前窗格 |
Ctrl+b ! | 将当前窗格拆分为一个独立窗口 |
Ctrl+b z | 当前窗格全屏显示,再使用一次会变回原来大小 |
Ctrl+b q | 显示窗格编号 |
Ctrl+b Alt+方向键 | 调整窗格大小 |
滚动窗口
tmux 滚动窗口需要通过指令操作
快捷键 | 说明 |
---|---|
Ctrl+b [ (按 q 退出滚动模式) | 滚动窗口 |
保存会话
默认情况下当重起系统后,需要重新定义 tmux 窗口,这很不是方便。
安装插件
我们需要安装 tmp 与tmux-resurrect插件
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
git clone https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/resurrect
修改配置文件 ~/.tmux.conf
添加以下内容
# 自动保存会话
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
set -g @resurrect-capture-pane-contents 'on'
run '~/.tmux/plugins/tpm/tpm'
run-shell ~/.tmux/plugins/resurrect/resurrect.tmux
返回终端重新加载配置项
tmux source ~/.tmux.conf
然后执行命令安装插件
prefix + I
保存会话
插件安装后就可以管理会话了,下例中的 prefix 就是.tmux.conf 文件中定义的 prefix
保存会话
prefix + Ctrl-s
恢复会话
prefix + Ctrl-r
大叔配置
下面是我配置好的~/.tmux.conf
文件内容,但要注意里面有插件的配置,所以需要保证已经安装了相关插件。
run-shell ~/tmux-onedark-theme/tmux-onedark-theme.tmux
#set -g @onedark_widgets "houdunren.com < B站/抖音@后盾人 #(ip)"
set -g @onedark_widgets "后盾人 #(ip)"
set -g @onedark_time_format "%I:%M"
set -g @onedark_date_format "%m:%d"
#set -g @onedark_date_format "%m:%d"
set-option -g default-terminal "screen-256color"
set -g default-terminal "screen-256color"
# 解决neovim中esc响应慢
set -s escape-time 0
set-option -g status-position bottom
# 自动保存会话
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
set -g @resurrect-capture-pane-contents 'on'
run '~/.tmux/plugins/tpm/tpm'
run-shell ~/.tmux/plugins/resurrect/resurrect.tmux
# 解除默认前缀
unbind C-b
# 设置自定义前缀
set -g prefix C-f
# 采用vim的操作方式
setw -g mode-keys vi
# 窗口序号从1开始计数
set -g base-index 1
# 开启鼠标模式
set-option -g mouse on
# 通过前缀+KJHL快速切换pane
#up
bind-key k select-pane -U
#down
bind-key j select-pane -D
#left
bind-key h select-pane -L
#right
bind-key l select-pane -R
常见问题
更改主机名
如果状态栏显示的主机名错误,请执行以下命令重新设置主机名
sudo scutil --set HostName houdunren
鼠标滚动无效
- ctrl+b
- 按
:
进入命令模式 - 输入
set -g mouse on
回车