只要 upload_on_save 设为 true 且 remote_path 权限、网络、认证正常,保存即上传可稳定工作;需通过右键项目根目录→sftp/ftp→map to remote 自动生成 sftp-config.json,并确保 type 为 "sftp"、host 不带协议头、remote_path 结尾无斜杠、密码或 ssh_key_file 配置正确,同时 upload_on_save 必须为布尔值 true、文件在映射目录内、服务器路径存在且有写权限、22 端口连通、ignore_regexes 使用正确正则(如 "^.git"、".*.log$"、"sftp-config.json")。

只要 upload_on_save 设为 true,且 remote_path 权限、网络、认证都正常,保存即上传就能稳定工作。不是“理论上可以”,而是多数项目里开箱即用——但容易卡在几个具体细节上。
如何快速生成并验证 sftp-config.json
别手动新建 JSON 文件。正确路径是:右键项目根目录 → SFTP/FTP → Map to Remote,插件会自动生成 sftp-config.json 并放在项目文件夹下(不是全局配置目录)。这样做的好处是:每个项目可独立配不同服务器,避免冲突。
生成后必须检查以下几项:
-
"type"值必须是"sftp"(不是"ftp"),否则走 FTP 协议,22 端口连不上 -
"host"不能带http://或https://,只填域名或 IP,比如"example.com"或"192.168.1.100" -
"remote_path"结尾不加斜杠(/var/www/html✅,/var/www/html/❌),否则部分服务器会报 “No such file” - 如果用密码登录,确认
"password"字段已取消注释(删掉前面的//)且值正确;用私钥则必须配"ssh_key_file"路径,并确保该文件可读
upload_on_save 失效的常见原因
保存后底部没出现上传进度条,或提示 “Upload failed”,先盯住这四点:
- 本地文件**不在已 Map 的项目目录内**:Sublime 只对通过
Map to Remote关联的文件夹生效,单个文件或未加入项目的子目录不会触发上传 -
"upload_on_save"写成了字符串"true"(带引号)——必须是布尔值true,JSON 里不加引号 - 服务器端
remote_path目录不存在,或用户无写权限(常见于 Linux,用ls -ld /var/www/html检查属主和权限) - 防火墙或云服务商安全组拦截了 22 端口(SFTP)或 21 端口(FTP),可用
telnet your-server.com 22快速验证连通性
忽略规则 ignore_regexes 怎么写才不误伤
这个字段控制哪些文件不上传,用的是正则表达式,不是 glob。容易出错的地方:
- 匹配文件名开头要加
^,比如想忽略所有.git目录,得写"^\.git"(注意双反斜杠转义) - 匹配扩展名结尾要用
$,例如忽略.log文件:".+\.log$" - 不要写成
"*.sublime-project"——*在正则里不是通配符,得用".*\.sublime-project" - 常见漏配:
"sftp-config\.json"必须加,否则配置文件自己会被上传到服务器,造成混乱
最常被忽略的是 remote_path 权限和 ignore_regexes 的正则写法——前者导致上传静默失败,后者让关键配置或构建产物意外被跳过。配完别急着写代码,先改一行保存,看底部状态栏有没有 Uploading... 和成功提示,再继续。











