SFTP-Next(v3.16+)是Sublime Text 4唯一支持upload_on_save的插件,因其纯Python 3重写、适配ST4.4107+;旧插件因依赖已移除的urllib2报ImportError且不监听保存事件,手动安装或使用sftp3/FTPSync均无效。

必须用 SFTP-Next(v3.16+),其他叫 SFTP 或 FTP 的插件在 Sublime Text 4 下基本不响应保存事件,upload_on_save 开了也白开。
为什么只有 SFTP-Next 能用 upload_on_save
Sublime Text 4 彻底移除 Python 2 支持,而 FTPSync、SublimeSimpleSync 等旧插件依赖已删除的 urllib2,一启动就报 ImportError: No module named urllib2,菜单都不显示。你搜到的“SFTP”插件里,只有作者是 wbond、版本号 ≥3.16 的 SFTP-Next 是纯 Python 3 重写、适配 ST4.4107+ 的唯一可靠选择。
- 别试
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-Next,手动安装会失败 - 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 项目
这是最容易被忽略的一点:你得通过 Project → Save Project As… 保存过一个 .sublime-project 文件,并在其中声明 sftp 配置块;单纯打开单个文件或未保存项目的文件夹,upload_on_save 不会触发。
还有,如果服务器响应慢或网络抖动,插件默认 3 秒超时,会静默失败。可在配置里加 "timeout": 10 提高容忍度;web 目录通常需要 644(文件)或 755(目录),否则 Nginx/Apache 拒绝读取,得手动指定 "default_permissions": "644"。

















