Terminal插件在Sublime Text 4中已失效,因官方移除exec命令API支持;唯一可靠替代方案是Terminus,它原生适配、支持嵌入面板与跨平台PTY通信,并需手动配置快捷键及shell路径。

Terminal 插件在 Sublime Text 4 上已失效
Sublime Text 4 官方移除了对 exec 命令底层 API 的兼容支持,而老牌 Terminal 插件(作者 wbond)严重依赖该机制。你装上后点菜单没反应、快捷键无效、或者报错 AttributeError: 'Window' object has no attribute 'run_command'——不是你配置错了,是它根本跑不起来。
用 Terminus 替代 Terminal 是当前唯一可靠方案
Terminus 是 Sublime Text 4 原生适配的终端模拟器,支持 Windows/macOS/Linux,能嵌入到编辑器底部面板、新建标签页,甚至绑定到构建系统。它不调用系统 shell 外部进程,而是通过 PTY 直接通信,稳定性高得多。
安装方式很简单:
- 打开 Command Palette(
Ctrl+Shift+P/Cmd+Shift+P) - 输入
Package Control: Install Package回车 - 搜
Terminus,选中安装
装完默认没有快捷键,得手动加:Preferences → Key Bindings,在用户键位文件里加一行:
{ "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {"cwd": "${file_path:${folder}}" } }
注意:cwd 参数决定终端起始路径,用 ${file_path:${folder}} 能保证打开时定位到当前文件所在目录,而不是 Sublime 启动时的工作目录。
别乱改 shell_cmd 或硬塞 cmd 配置
有人想绕过插件,直接在 Tools → Build System → New Build System 里写个命令行启动器,比如:
{
"shell_cmd": "cmd.exe",
"working_dir": "${file_path:${folder}}"
}
这看似能“打开命令行”,但实际只是调用一次 cmd.exe 启动后就退出,根本没法交互。Sublime 的构建系统设计初衷是执行单次命令并捕获输出,不是维持一个可输入的终端会话。
常见错误包括:
- 误以为
shell_cmd支持bash -i这类交互式参数(Sublime 不转发 stdin/stdout 流) - 把
cmd写成绝对路径如C:WindowsSystem32cmd.exe,导致跨平台失效或权限问题 - 在 macOS 上硬写
open -a Terminal,结果新开一个独立窗口,和 Sublime 完全无关
Terminus 的 shell 参数必须显式指定
默认情况下,Terminus 在 Windows 用 cmd,macOS/Linux 用 bash,但如果你装了 zsh、pwsh 或 git-bash,就得手动指定,否则可能找不到命令或环境变量缺失。
例如在 Windows 上用 Git Bash:
{ "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": { "shell": "C:\Program Files\Git\bin\bash.exe", "cwd": "${file_path:${folder}}" } }
又比如 macOS 想用 zsh:
{ "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": { "shell": "/bin/zsh", "cwd": "${file_path:${folder}}" } }
路径里的反斜杠要双写(\),斜杠方向不能错;/bin/zsh 不能写成 zsh,否则 Terminus 找不到可执行文件。
真正麻烦的其实是 Windows 下的中文路径和编码——如果项目路径含中文,Terminus 默认用 cp936 解码,但 Git Bash 内部是 UTF-8,这时候得额外加 "encoding": "UTF-8" 参数,否则 ls 出来全是乱码。这个细节几乎没人提,但一碰就卡住。










