sublime text 本身不支持一键部署,所谓“一键”实为借助sftp插件或terminus调用rsync、ssh等外部命令实现;真正部署应交由ci/cd流水线处理。

Sublime Text 里根本不存在“一键部署”这个功能
所谓“一键部署”,本质是把本地代码同步到远程服务器并触发服务重启,Sublime Text 作为纯文本编辑器,不提供 SSH、SFTP 或远程执行能力。所有标榜“一键”的方案,背后都依赖插件(如 SFTP)或外部命令(如 rsync + ssh)。直接在编辑器里按个键就上线生产环境,要么配置了高危无密码 SSH,要么绑定了未经校验的 shell 脚本——这两者都不该出现在真实开发流程中。
调试时用 Terminus 启动本地服务最靠谱
真正高频且安全的“一键”动作,是运行当前文件或启动本地 dev server。这靠 Terminus + 自定义 build system 实现,而非部署。
-
Terminus必须先装好:用Ctrl+Shift+P→Package Control: Install Package→ 搜Terminus安装 - 快捷键建议设为
ctrl+`(反引号),绑定到terminus_open命令,不是terminus_exec - 想运行当前 Python 文件?建一个
Python-Terminus.sublime-build,内容为:{ "target": "terminus_exec", "cancel": "terminus_cancel_build", "cmd": ["python3", "$file"], "working_dir": "$file_path" }注意:python3必须在$PATH中,用which python3确认路径 - Node.js 调试别用
Alt+D(那是旧版SublimeText-Nodejs插件),改用Terminus执行node --inspect-brk $file,再配 Chrome DevTools 连接localhost:9229
SFTP 插件上传 ≠ 部署,漏掉这步就炸锅
SFTP 插件能传文件,但“上传完成即部署成功”是错觉。它不处理依赖安装、数据库迁移、服务重载或回滚逻辑。
- 每个项目必须有
sftp-config.json,里面remote_path写绝对路径,比如/var/www/myapp,不能写~/myapp(~ 展开依赖 shell,SFTP不走 shell) - 启用
"upload_on_save": true很危险:保存即上传,但没做 diff 校验,可能传一半中断,导致线上文件损坏 - 真正要部署,得在
sync_down或sync_up后追加"ssh_command": "systemctl restart myapp.service"——但这要求服务器上sshd允许无交互执行 sudo,通常需额外配sudoers - 更稳妥的做法:用
Terminus在底部面板手动跑rsync -avz --delete ./ user@host:/path && ssh user@host 'cd /path && npm install && pm2 reload ecosystem.config.js'
终端卡死、命令不响应?八成是 shell 初始化搞的鬼
Terminus 启动的是非交互式 shell,不会 source ~/.bashrc 或 ~/.zshrc 全量内容,但某些配置项仍会触发阻塞(比如网络请求、慢速插件加载)。
- macOS 上 zsh 启动卡住?检查
~/.zshrc里有没有curl、git或nvm相关的同步调用;注释掉试试 - Windows 用 Git Bash 却报
exec: "bash": not found?说明bash.exe路径没进系统PATH,或者Terminus的shell_configs没指向正确位置 - 临时绕过所有初始化:在快捷键绑定里把
cmd改成["/bin/bash", "--norc", "--noprofile"],确认是否真由配置引起 - 别信“开机自动打开终端”——
Terminus不支持自启面板,每次都要手动唤起
真正的部署从来不是编辑器的事,而是 CI/CD 流水线或运维脚本的责任。Sublime 里的终端和同步,只该用于本地验证和快速推送测试变更。把构建、校验、锁机制、回滚这些事塞进编辑器快捷键,迟早踩进权限、原子性和可观测性的坑里。











