Sublime Text 无内置终端,需用 Terminus 插件嵌入真实终端或调用系统终端解决 input() 卡死、中文乱码、os.system 失效等问题;其构建面板仅为管道,缺乏伪终端(pty)能力。

Sublime Text 本身不提供内置终端,所谓“终端运行环境”实际是指:用外部终端(如系统 Terminal、CMD、PowerShell)执行代码,而非在 Sublime 自带的输出面板里跑 —— 这是解决 input() 卡死、中文乱码、os.system 失效、依赖 TTY 的工具(如 git、ssh)无法交互等痛点的唯一可靠方式。
为什么不能只靠 Build System 输出面板?
Sublime 的构建输出面板本质是管道(pipe),不是真正的终端(TTY)。它不支持:
-
input()调用时无响应或直接跳过 -
os.system("clear")、os.system("pause")等系统命令静默失败 - 需要读取
/dev/tty的程序(如某些密码输入、gpg、ssh-agent) - 实时刷新的进度条(
print("...", end="\r"))渲染错乱
这些不是配置问题,是架构限制 —— 输出面板没有伪终端(pty)能力。
用 Terminus 插件启动真实终端
Terminus 是目前 Sublime 上最稳定、维护活跃的终端插件,能嵌入面板或独立窗口运行 shell。
- 先装 Package Control(没装的话按
Ctrl+`粘贴安装脚本) - 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Terminus并安装 - 安装完重启 Sublime,再按
Ctrl+Shift+P→Terminus: Open Default Shell in Panel
此时底部会弹出一个可交互的终端,等价于你在系统里打开 Terminal/CMD。你可以 cd 到项目目录、source venv/bin/activate、python main.py,一切行为和原生终端一致。
把 Terminus 绑定到快捷键或 Build System
不想每次手动调起?可以绑定快捷键或集成进构建流程:
- 按
Preferences → Key Bindings,在右侧用户键位文件中加一行:{"keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {"shell_cmd": "bash"}}(macOS/Linux)
或{"keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {"shell_cmd": "cmd"}}(Windows) - 想一键在当前文件所在目录打开终端:用
"shell_cmd": "cd \"$file_path\" && bash"(注意 Windows 用cmd /c和&&) - 不推荐把
Terminus直接写进.sublime-build:Build System 设计目标是单次执行,而终端需长期存活;混用反而导致进程残留或路径错乱
替代方案:用系统终端 + 文件路径联动
如果你不需要嵌入式终端,更倾向“编辑完立刻切出去运行”,可以省去插件,靠快捷键直达系统终端:
- macOS:用
open -a Terminal "$file_path"或open -a "iTerm2" "$file_path" - Windows:用
start cmd /k cd /d "$file_path"(注意/k保持窗口打开) - Linux:用
gnome-terminal --working-directory="$file_path"或alacritty --working-directory "$file_path" - 把这些命令做成快捷键或菜单项(
Tools → Command Palette → New Plugin...),比插件更轻量、更可控
真正容易被忽略的是工作目录和 shell 初始化脚本的加载顺序 —— 比如 macOS 上用 zsh,但图形界面启动的 Terminal 默认不 source ~/.zshrc,导致 pyenv、asdf 切换的 Python 版本不可见。这时候得显式加 zsh -i -c "cd '$file_path' && python $file_name",否则你以为路径对了,其实解释器版本早错了。


















