Tmux使用及配置
安装最新版Tmux
下载地址:releases
允许鼠标滚动
新的配置项已简化为
set -g mouse on
将他写到 ~/.tmux.conf
中然后执行
tmux source ~/.tmux.conf
注意2.1版本以下的配置项在新版本中已经被废弃
setw -g mouse-resize-pane on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mode-mouse on
使用不同的 Shell
默认使用的是 bash, 如果要改成 zsh,可以在 .tmux.conf 中配置:
set -g default-command /bin/zsh
set -g default-shell /bin/zsh
激活持续时间
set-option -g display-time 5000 # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000 # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
常用组合键
ctrl+b ? 显示快捷键帮助
ctrl+b 空格键 采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
ctrl+b ! 把当前窗口变为新窗口
ctrl+b " 模向分隔窗口
ctrl+b % 纵向分隔窗口
ctrl+b q 显示分隔窗口的编号
ctrl+b 上下键 上一个及下一个分隔窗口
ctrl+b C-方向键 调整分隔窗口大小
ctrl+b & 确认后退出当前tmux
ctrl+b [ 复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
ctrl+b ] 粘贴复制模式中复制的文本
ctrl+b { 向前置换当前面板
ctrl+b } 向后置换当前面板
ctrl+b C+o 顺时针旋转当前窗口中的所有面板
ctrl+b o 选择下一面板
ctrl+b c 创建新窗口
ctrl+b l 最后使用的窗口
ctrl+b w 以菜单方式显示及选择窗口
ctrl+b s 以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
ctrl+b t 显示时钟。然后按enter键后就会恢复到shell终端状态
ctrl+b d 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
ctrl+b D 选择要断开的会话
ctrl+b ~ 列出提示信息缓存
ctrl+b : 进入命令行模式,此时可直接输入ls等命令
ctrl+b C+z 挂起当前会话
ctrl+b & 关闭当前窗口(关闭前需输入y or n)
ctrl+b 0~9 切换到指定窗口
ctrl+b p 切换到上一窗口
ctrl+b n 切换到下一窗口
ctrl+b f 快速定位到窗口(输入关键字匹配窗口名称)
个性化配置
tmux加上下列参数,实现个性化设置
set-option -g base-index 1 # 窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000 # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000 # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi # 操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g status-utf8 on # 开启状态栏的UTF-8支持
---
set-option -g status-bg blue
set-option -g status-fg '#bbbbbb'
set-option -g status-left-fg green
set-option -g status-left-bg blue
set-option -g status-right-fg green
set-option -g status-right-bg blue
set-option -g status-left-length 10 # 状态栏左方的内容长度;
set-option -g status-right-length 15 # 状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set-option -g status-left '[#(whoami)]' # 状态栏左方的内容
set-option -g status-right '[#(date +" %m-%d %H:%M ")]' # 状态栏右方的内容;这里的设置将得到类似23:59的显示
set-option -g status-justify "centre" # 窗口列表居中显示
set-option -g default-terminal "screen-256color" # 支持256色显示
分割窗口边界的颜色
set-option -g pane-active-border-fg '#55ff55'
set-option -g pane-border-fg '#555555'
---
此类设置可以在命令行模式中输入show-window-options -g查询
set-window-option -g mode-keys vi # 复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on # 开启窗口的UTF-8支持
set-window-option -g mode-mouse on # 窗口切换后让人可以用鼠标上下滑动显示历史输出
---
窗口切分快捷键(没设置成功)
bind \ split-window -h # 使用 \ 将窗口竖切
bind - split-window -v # 使用 - 将窗口横切
bind K confirm-before -p "kill-window #W? (y/n)" kill-window # 使用大写 K 来关闭窗口
bind '"' choose-window # 双引号选择窗口
---
Pane之间切换的快捷键
bind h select-pane -L # 定位到左边窗口的快捷键
bind j select-pane -D # 定位到上边窗口的快捷键
bind k select-pane -U # 定位到下方窗口的快捷键
bind l select-pane -R # 定位到右边窗口的快捷键
整理收集
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# Mouse mode
set -g mouse on
# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v
# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
Send prefix
把prefix的ctrl+b变为了ctrl+a,因为这样按起来方便些。基本上用tmux的都改了这个。
Use Alt-arrow keys to switch panes
不用按prefix,直接用alt+箭头在pane之间switch。实际用过之后才发现真是太方便了!
Shift arrow to switch windows
不用按prefix,直接用shift+箭头在window之间switch。太方便了!
Mouse mode
开启鼠标模式。用鼠标就能切换window,pane,还能调整pane的大小,方便!
Set easier window split keys
这一部分是用来更方便切分pane的。prefix + v 代表竖着切,prefix + h 代表横着切。比起默认的切割方法不仅直观而且方便。
Easy config reload
下一次如果修改了.tmux.conf的设置的话,不用关掉tmux。直接用prefix+r,就能重新加载设置。
别名
alias tn='tn(){tmux new -s $1};tn'
alias tk='tk(){tmux kill-session -t $1};tk'
alias tka='tmux kill-server'
alias td='tmux detach'
alias tl='tmux list-session'
alias tad='tad(){tmux attach -t $1};tad'
alias tsw='tsw(){tmux switch -t $1};tsw'
alias tren='tren(){tmux rename-session -t $1 $2};tren'
alias tv='tmux split-window'
alias th='tmux split-window -h'
目前使用的方案
github上有比较好的,建议使用.
$ cd ~
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .
WSL复制解决方案
目前wsl
中的复制只能复制一个屏幕的,内容过多就要分段复制,非常不好用
# buffer缓存复制到Linux系统粘贴板
bind C-c run " tmux save-buffer - | /mnt/c/Windows/System32/clip.exe"
上述的操作是将tmux进程中的buffer缓存复制到clip.exe中
复制流程为:
使用快捷键 ctrl+b [ 进入复制模式
移动光标选择上下文,使用v键开始选择文本
使用y键为复制选中文本
使用ctrl+b ctrl+c 系统复制
流程2
使用快捷键 ctrl+b [ 进入复制模式
移动光标选择上下文,使用空格键开始选择文本
使用Enter键为复制选中文本
使用ctrl+b ctrl+c 系统复制
这里使用window
中的clip.exe
这里要注意,必须要设置/etc/wsl.conf
文件
[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true
第一个是是否允许运行window
中的程序
第二个是否带入window
中的环境变量
我这边只开了第一个enabled
网上的解决方案
在gpakosz
的配置中,里面设置的是window的复制为:
$ grep "clip.exe" -in ~/.tmux.conf
152:if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | clip.exe"'
757:# command -v clip.exe > /dev/null 2>&1 && command='clip\.exe'
可以发现,更加的方便,但是必须打开/etc/wsl.conf
中的环境变量开关
或者/etc/profile
中添加环境变量
export PATH=$PATH:/mnt/c/Windows/System32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2018-07-04 Spring-Cache 注解 @Cacheable,@CachePut , @CacheEvict
2016-07-04 MongoDB的C#封装类
2013-07-04 Linq let Concat