sublime text 通过 terminus 插件桥接 tmux,需确保路径、环境、剪贴板三者对齐:修正 shell 配置避免提前退出,设置 working_dir 或项目根目录同步路径,macos 下用 reattach-to-user-namespace 解决剪贴板隔离问题。

Sublime Text 本身不直接集成 tmux,但可通过 Terminus 插件桥接,再配合 tmux 自身配置实现协同工作;关键不在“联动”,而在路径、环境、剪贴板三处对齐。
Terminus 启动的 shell 必须能正确加载 tmux
默认 Terminal(如 Terminus)打开的是 login shell,但若 ~/.bashrc 或 ~/.zshrc 中有 exit、return 或未加守卫的 [[ -n $TMUX ]] && exit,会导致 shell 立即退出,tmux 进不去。
- macOS / Linux 用户检查
~/.zshrc开头是否有无条件exit,注释掉再试 - Windows 用户若用 Git Bash,确保
cmd配置为"C:\Program Files\Git\bin\bash.exe",且启动参数含--login(Terminus 默认带) - 想一开终端就进 tmux?在 shell 配置末尾加:
[[ -z $TMUX ]] && exec tmux(注意是exec tmux,不是tmux)
Sublime 当前文件路径要能透传给 tmux 会话
Terminus 的 working_dir 设为 "${file_path}" 只影响初始目录,一旦进入 tmux,新 pane 或新 window 默认仍继承父 shell 路径,不会自动跳转到当前文件所在目录。
- 手动同步:在 tmux 中按
prefix + :进入命令模式,输入send-keys "cd ${file_path}" Enter—— 但这需要 Sublime 把变量实时传进去,原生不支持 - 实用替代:在 Terminus 设置里把
working_dir改成"${folder}",确保你已用Project → Save Project As…保存了项目,则所有 tmux pane 默认都在项目根下 - 更稳做法:写个简单 shell 函数,比如
scd() { cd "$(subl --command 'get_project_folder' 2>/dev/null || echo .)"; },再绑定到 tmux 快捷键
macOS 下 tmux 剪贴板无法粘贴到 Sublime?不是 Sublime 的问题
Sublime 的 ctrl+v 读的是系统剪贴板,而 tmux 默认用内部缓冲区;macOS 的安全模型又限制子进程访问剪贴板,所以 tmux 里的复制(即使开了 set -g mouse on)默认出不去。
- 必须装
reattach-to-user-namespace:brew install reattach-to-user-namespace - 在
~/.tmux.conf里加两行:set-option -g default-command "reattach-to-user-namespace -l zsh"set-option -g set-clipboard on - 改完别忘了重载:
prefix + :source-file ~/.tmux.conf或直接prefix + r - 验证是否生效:在 tmux 里选中文本 →
prefix + [进复制模式 →Space开始选 →Enter复制 → 切到 Sublime 按ctrl+v,能粘贴即通
真正卡住人的地方,往往不是“怎么启动 tmux”,而是 tmux 启动后,Shell 环境没加载全、路径没继承对、剪贴板权限被 macOS 拦在门外——这三处不调通,Sublime 和 tmux 就只是两个并排开着的窗口,不是一套工作流。











