只有 sftp(wbond 版,v3.16+)支持 sublime text 4 的“保存即传”,因其纯 python 3 重写、适配 st4.4107+;其他插件因依赖废弃的 urllib2 或非真正网络传输而失效。

Sublime Text 本身不支持自动上传,所谓“保存即传”完全依赖 SFTP 插件(wbond 版,v3.16+),且仅支持 SFTP 协议——不是 FTP,也不是 FTPS。 其他名字带 FTP/Sync 的插件在 Sublime Text 4 下基本不可用:FTPSync 启动失败、SublimeSimpleSync 实际只做本地复制、SideBarEnhancements 只是调外部程序。
为什么只有 SFTP(wbond) 能用,其他插件全挂了
Sublime Text 4 彻底移除 Python 2 支持,而 FTPSync、SublimeSimpleSync 等旧插件依赖已废弃的 urllib2,一启动就报 ImportError: No module named urllib2,菜单都不显示。SFTP 插件作者重写了整个代码库,纯 Python 3 实现,适配 ST4.4107+,支持 SSH 密钥、upload_on_save、远程命令执行等核心能力。
- 别试
FTPSync:GitHub 最后更新是 2018 年,ST4 下加载失败 - 别信
SublimeSimpleSync:配置里写"type": "ftp",实际根本不走网络,只复制本地文件夹 - 别指望
SideBarEnhancements + FileZilla:右键只是调起外部程序,无法触发“保存即传”
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-package到Packages/目录会静默退出 - Sublime Text 版本 ≥ 4.4107(低版本在 TLS 握手阶段可能抛
ssl.SSLError) - 服务器必须启用 SFTP(不是 FTP),且你的账号对
remote_path有写权限 —— 先在终端跑sftp user@host,确认能登录并cd进目标目录 - 当前编辑的文件必须属于已
Map to Remote的项目目录;单个文件、未加入项目的子目录不会触发上传
容易被忽略的权限与路径细节
很多“上传失败”其实和网络无关,而是底层 SSH 行为被卡住:
-
ssh_key_file路径必须是绝对路径(/home/you/.ssh/id_rsa),不能用~符号(插件不解析 shell 别名) - 密钥文件权限必须是
600,Linux/macOS 下执行chmod 600 ~/.ssh/id_rsa,否则 OpenSSH 直接拒绝读取 -
"remote_path"结尾不加斜杠("/var/www/html"✅,"/var/www/html/"❌),否则部分服务器会报 “No such file” - 同时写了
"password"和"ssh_key_file"?二者互斥,删掉"password"字段











