Sublime Text 本身无内置终端,Ctrl+` 打开的是仅执行 Python 代码的控制台,不支持 ls、git 等 shell 命令;需安装 Terminus 插件并在用户键绑定中配置 terminus_open 命令方可启用真正系统终端。

Sublime Text 本身没有内置终端,Ctrl+` 打开的是 Python 控制台,不是系统 shell——它不认 git、python main.py,也不加载你的 .zshrc 或虚拟环境。真正在编辑器里跑命令行,必须装 Terminus 插件。
怎么确认你用的不是系统终端
按下 Ctrl+` 后看到 >>> 提示符,输入 print("test") 能执行,但输 ls 报错 NameError: name 'ls' is not defined,就说明你还在 Python 控制台里。这不是 bug,是设计如此。系统终端和 Python 控制台完全隔离,路径、环境变量、shell 配置互不影响。
- Python 控制台只用来执行 Python 代码、调用 Sublime API(比如
sublime.active_window())、调试插件 - 所有需要运行 shell 命令(
npm run dev、poetry shell、make test)的场景,都得靠Terminus - 别信名字带 “Terminal” 的其他插件:
SublimeTerminal停更多年,ShellCommand不支持Ctrl+C中断,Cmd Caller只能弹外部窗口
安装 Terminus 必须走 Package Control,且只认 wbond 版本
打开命令面板(Ctrl+Shift+P),输入 Package Control: Install Package 回车,等列表加载完再搜 Terminus——注意拼写,不是 Terminal,也不是任何带 fork 的变体。作者必须是 wbond。
- 如果搜不到
Install Package,说明Package Control没装好;验证方式是执行Package Control: List Packages,应返回空列表而非报错 - ST4 用户务必用含
hashlib.sha256校验的新脚本,老脚本会显示 “Success!” 但后续terminus_open命令完全不响应 - 装完建议关掉所有 Sublime 窗口再重开,否则面板缓存可能冲突导致终端打不开
- 如果控制台报
ImportError: No module named terminus,删掉Packages/Terminus/目录后重试
快捷键不生效?90% 是 JSON 配置写错或被系统劫持
Terminus 默认不绑定快捷键。Ctrl+` 不会自动变成终端,必须手动进 Preferences → Key Bindings,在右侧「用户配置」区添加 JSON。左侧默认配置区改了无效。
- 推荐配置(Windows/Linux):
[{"keys": ["ctrl+t"], "command": "terminus_open", "args": {"cwd": "${file_path:${folder}}"}}] - macOS 用户把
ctrl换成cmd即可 - 确保
"command"是"terminus_open",不是"terminus"或"open_terminus" - 如果按了没反应,先检查是否被输入法、远程桌面或安全软件劫持了快捷键(尤其
Ctrl+T在浏览器里是新建标签页)
终端打不开?先查 shell 路径和系统环境
Windows 用户默认可用 cmd.exe,但推荐配 powershell.exe 或 wt.exe(Windows Terminal),后者支持 ANSI 颜色和现代特性;macOS 用户注意系统默认是 zsh,但某些老项目依赖 bash,得看实际需求选;若终端打不开,先检查 /bin/zsh 是否在 $PATH 里。
- Linux 用户若报
exec: "sh": executable file not found in $PATH,说明系统环境异常,不是插件问题,需修复PATH - 在
Terminus设置里改shell字段时,路径必须绝对且可执行,比如 Windows 上写"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",不能只写powershell - 工作目录同步靠
${file_path:${folder}}实现,但如果文件没保存过(即${file_path}为空),就会 fallback 到${folder},这个逻辑容易被忽略
最常被跳过的一步:改完 Key Bindings 或 Terminus 设置后不重启 Sublime,结果以为配置失败。其实很多缓存只在启动时加载,硬 reload 不顶用。


















