之前听说过 Tmux,有很强大的功能,会话复用,分屏,保存当前会话,共享会话… 今天专门学习了解了下这玩意,本文是一篇安装配置记录(只是怕忘了快捷键 🙂)
内容如下:
文中使用环境为 CentOS 7
安装 Tmux CentOS 7 中使用 yum 安装只有 1.8
版本,所以建议下载源码编译安装
包管理方式安装(除 macOS 外,可能版本不是最新):
1 2 3 4 5 6 7 8 yum install tmux apt-get install tmux brew install tmux
源码编译安装,编译前需先安装:ncurses 和 libevent
1 2 3 4 5 6 7 wget https://github.com/tmux/tmux/releases/download/3.1b/tmux-3.1b.tar.gz tar -zxvf tmux-3.1b.tar.gz cd tmux-3.1b./configure && make sudo make install
配置 Tmux 在用户目录新建 .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 set -g prefix C-a # 修改 Prefix 组合键为 Ctrl + a unbind C-b # 取消 Ctrl + b 的快捷键组合 bind C-a send-prefix # 修改 Prefix 组合键为 Ctrl + a set -g prefix2 ` # 修改 Prefix 备用组合键为 ` set -g base-index 1 # 窗口编号从 1 开始计数 set -g pane-base-index 1 # 窗格编号从 1 开始计数 set -g status-bg black # 设置状态栏背景黑色 set -g status-fg yellow # 设置状态栏前景黄色 set -g mouse on # 开启鼠标 set -g default-terminal "screen-256color" # 设置默认终端模式为 256color 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 或在 Tmux 内 Prefix + I # ----------------------------------------------------------------------------- setenv -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins' set -g @plugin 'tmux-plugins/tmux-pain-control' # 方便分屏操作 set -g @plugin 'tmux-plugins/tmux-resurrect' # 保存会话 # tmux-resurrect set -g @resurrect-dir '~/.tmux/resurrect' # 初始化 TPM 插件管理器 (放在配置文件的最后) run '~/.tmux/plugins/tpm/tpm'
常用命令 启动新会话:
1 tmux [new -s 会话名 -n 窗口名]
恢复会话:
列出所有会话:
关闭会话:
1 tmux kill-session -t 会话名
关闭所有会话:
1 tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill
快捷键 先按下设置好的 Prefix 键,默认为 Ctrl + b
,上面配置文件已修改为 Ctrl + a
或 `
,然后按如下按键
会话 1 2 3 :new <回车> 启动新会话 s 列出所有会话 $ 重命名当前会话
窗口(标签页) 1 2 3 4 5 6 7 c 创建新窗口 w 列出所有窗口 n 后一个窗口 p 前一个窗口 f 查找窗口 , 重命名当前窗口 & 关闭当前窗口
调整窗口排序 1 2 3 swap-window -s 3 -t 1 交换 3 号和 1 号窗口 swap-window -t 1 交换当前和 1 号窗口 move-window -t 1 移动当前窗口到 1 号
窗格 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 % 垂直分割 " 水平分割 o 交换窗格 x 关闭窗格 ⍽ 左边这个符号代表空格键 - 切换布局 q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格 { 与上一个窗格交换位置 } 与下一个窗格交换位置 z 切换窗格最大化/最小化 # 使用 tmux-pain-control 插件 | 垂直分割 - 水平分割 \ 整体垂直分割 _ 整体水平分割
调整窗格尺寸 1 2 3 4 5 6 7 8 9 10 11 12 PREFIX : resize-pane -D 当前窗格向下扩大 1 格 PREFIX : resize-pane -U 当前窗格向上扩大 1 格 PREFIX : resize-pane -L 当前窗格向左扩大 1 格 PREFIX : resize-pane -R 当前窗格向右扩大 1 格 PREFIX : resize-pane -D 20 当前窗格向下扩大 20 格 PREFIX : resize-pane -t 2 -L 20 编号为 2 的窗格向左扩大 20 格 # 使用 tmux-pain-control 插件 shift + h 将分割线左移 5 格 shift + j 将分割线下移 5 格 shift + k 将分割线上移 5 格 shift + l 将分割线右移 5 格
其他 同步窗格,按下 Prefix,输入如下内容后回车,这个选项值针对某个窗口有效,不会影响别的会话和窗口
1 :setw synchronize-panes on/off
杂项:
1 2 3 4 d 退出 tmux(tmux 仍在后台运行) t 窗口中央显示一个数字时钟 ? 列出所有快捷键 : 命令提示符
其他设置 启动 shell 时自动启动 tmux 下面的配置会尝试只启动一个会话,登录时,如果之前启动过会话,那么它会直接 attach,而不是新开一个。
加入到 .bashrc
或 .zshrc
中。
1 2 3 4 5 # TMUX if which tmux >/dev/null 2>&1; then #i f not inside a tmux session, and if no session is started, start a new session test -z "$TMUX" && (tmux attach || tmux new-session) fi
参考: