Sublime Text 4仅SFTP-Next(v3.16+)支持upload_on_save,因其为纯Python 3重写,适配ST4.4107+;旧插件如FTPSync因依赖已删的urllib2而失效。

Sublime Text 本身不支持保存即同步,唯一能稳定实现 upload_on_save 的方案是安装并正确配置 SFTP 插件(v3.16+,即 SFTP-Next),其他带 FTP/Sync 名字的插件在 ST4 下基本失效或根本不会触发上传。
为什么只有 SFTP-Next 能用 upload_on_save
Sublime Text 4 彻底移除 Python 2 支持,而 FTPSync、SublimeSimpleSync 等旧插件依赖已删除的 urllib2,一启动就报 ImportError: No module named urllib2,菜单都不显示。SFTP 插件作者已重写为纯 Python 3 版本,适配 ST4.4107+,完整支持 upload_on_save、SSH 密钥、远程命令执行等核心功能。
- 别试
FTPSync:它只响应手动命令(如Ctrl+Alt+U),设计上就不监听保存事件 - 别手动丢
.sublime-package到Packages/目录:会静默退出,必须用Package Control: Install Package - 别用
sftp3:它是社区维护的旧分支,ST4 下兼容性不稳定,官方推荐只用SFTP-Next
sftp-config.json 必须填对的字段
右键项目根目录 → SFTP: Setup Server 生成的配置里,这几个地方填错会导致“看似上传成功,但文件没到目标位置”或“完全没反应”:
-
"host":只填域名或 IP,比如"example.com"或"192.168.1.100",不要加sftp://或ftp:// -
"remote_path":必须是绝对路径,以/开头,比如"/var/www/html";写成"www"或"./www"会传到用户 home 目录下 -
"ssh_key_file":比明文密码安全,填"~/.ssh/id_rsa"即可,不用展开成/Users/xxx/.ssh/id_rsa -
"upload_on_save":必须设为true才能自动上传;但如果你常写未完成的模板,建议先设为false,用右键SFTP: Upload File手动传
upload_on_save 生效的三个硬性前提
光写 "upload_on_save": true 不够,以下三点缺一不可:
- 必须通过
Package Control安装SFTP,手动安装会失败 - Sublime Text 版本 ≥ 4.4107(低版本在 TLS 握手阶段可能抛
ssl.SSLError) - 服务器必须启用 SFTP(不是 FTP),且你的账号对
remote_path有写权限 —— 先在终端跑sftp user@host,确认能登录并cd进目标目录
另外两个实用配置也建议加上:"save_before_upload": true(避免忘了保存就传)、"save_on_focus_lost": true(改完切走就同步,需加到 Preferences: Settings - User 中)。
常见失败现象和排查路径
上传失败时,SFTP 插件默认不弹错误框,也不会阻塞 UI,容易误以为“没反应”。真实错误藏在控制台和输出面板里:
- 按
Ctrl+`打开 Sublime 控制台,看是否有Connection refused、Permission denied或timeout类日志 - 菜单栏 →
Tools → SFTP → Show Output,查看详细传输日志,尤其注意remote_path是否被ignore_regexes误过滤 - 中文文件名乱码?检查服务器 locale 是否支持 UTF-8,或临时改用英文名测试
- 大文件卡死 UI?这是预期行为 ——
SFTP是单线程上传,不支持后台异步,别用它传 >5MB 的资源文件
最易被忽略的是:服务器上 remote_path 目录不存在,或权限不足(比如只读),此时插件可能静默跳过上传,连错误都不报。务必先 ssh 登上去 mkdir -p /your/path && chmod 755 /your/path。

















