tmux:终端复用器精通指南
tmux 让你可以运行多个终端会话,在 SSH 断开后保持进程运行,并创建有序的工作区。
安装与启动
# 安装
brew install tmux # macOS
apt install tmux # Ubuntu
# 启动新会话
tmux new -s mysession
# 附加到现有会话
tmux attach -t mysession
# 列出会话
tmux ls
常用快捷键(前缀 = Ctrl+b)
会话:
prefix + d 分离会话
prefix + $ 重命名会话
prefix + s 列出/切换会话
窗口(标签页):
prefix + c 创建新窗口
prefix + , 重命名窗口
prefix + n 下一个窗口
prefix + p 上一个窗口
prefix + & 关闭窗口
prefix + 0-9 按编号切换窗口
面板(分割):
prefix + % 垂直分割
prefix + " 水平分割
prefix + 方向键 在面板间导航
prefix + z 放大/还原面板
prefix + x 关闭面板
prefix + { 向左移动面板
prefix + } 向右移动面板
配置(~/.tmux.conf)
# 将前缀改为 Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 启用鼠标
set -g mouse on
# 更好的颜色
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
# 窗口从 1 开始编号(而非 0)
set -g base-index 1
setw -g pane-base-index 1
# Vi 模式
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# 便捷分割
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 状态栏
set -g status-style 'bg=#333333 fg=#5eacd3'
set -g status-left '#[bold]#S '
set -g status-right '#(date +"%H:%M")'
使用 tmux 编写脚本
#!/bin/bash
# 创建开发环境
tmux new-session -d -s dev -n editor
tmux send-keys -t dev:editor "nvim ." Enter
tmux new-window -t dev -n server
tmux send-keys -t dev:server "npm run dev" Enter
tmux new-window -t dev -n git
tmux send-keys -t dev:git "git status" Enter
tmux select-window -t dev:editor
tmux attach -t dev
复制模式(回滚)
prefix + [ 进入复制模式
q 退出复制模式
/ 向前搜索
? 向后搜索
v 开始选择(vi 模式)
y 复制选择内容
prefix + ] 粘贴
TPM(插件管理器)
# 安装 TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 添加到 .tmux.conf
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect' # 保存/恢复会话
set -g @plugin 'tmux-plugins/tmux-continuum' # 自动保存
run '~/.tmux/plugins/tpm/tpm'
tmux 对于远程服务器工作和本地多项目开发至关重要。