Sublime Text需装SFTP-Next(ST4)或原版SFTP(ST3),配置sftp-config.json于项目根目录,设"upload_on_save":true并配准ignore_regexes防误传。

Sublime Text 本身不支持实时同步,所谓“保存即上传”是 SFTP 插件监听 on_post_save_async 事件后触发的一次性单向传输,不是双向、持续、带冲突检测的同步。它能用,但必须清楚边界——否则你会在某次 Ctrl+S 后发现线上配置被覆盖、中文文件名乱码、或大文件卡死 UI。
怎么确认自己该装 sftp3 还是 SFTP-Next
Sublime Text 4(Build 41xx)必须用 SFTP-Next;Sublime Text 3(Build 3xxx)可用原版 SFTP(作者 wbond)。装错会直接报 ImportError: No module named 'urllib3' 或右键无菜单。别搜 “SFTP”,改搜 sftp3(社区维护分支,兼容 ST4)或 SFTP-Next(ST4 官方推荐)。装完务必重启 Sublime,否则插件 GUI 不加载。
sftp-config.json 放哪、怎么写才生效
这个文件不是全局配置,只对“当前项目根目录”有效,且必须满足三个硬条件:
- 文件名严格为
sftp-config.json(大小写敏感,不能是SFTP-config.json或sftp_settings.json) - 必须放在通过
Project → Add Folder to Project加入侧边栏的那个文件夹下(即项目根目录) - 必须包含
host、user、remote_path三项,缺一就提示Invalid config
remote_path 要以 / 开头,结尾不加 /(如 "/var/www/html");Windows 下 private_key 路径用正斜杠:"C:/Users/me/.ssh/id_rsa";upload_on_save 必须是布尔值 true,不是字符串 "true"。
为什么改了文件却没上传,或者上传失败没提示
静默失败几乎都卡在 SSH 底层,和插件本身无关。常见真因:
- 本地命令行执行
ssh -i /path/to/key user@host都连不通,插件肯定失败 -
private_key文件权限不是600(Linux/macOS 下执行chmod 600 ~/.ssh/id_rsa) - 服务器
/etc/ssh/sshd_config中PubkeyAuthentication被设为no -
ignore_regexes写成了"*.js"—— 正确写法是"\.js$",否则可能误杀所有含 js 的路径 - 当前文件不在已映射的项目目录内(比如你打开的是桌面一个单独的
index.html,即使有配置也不触发)
查错唯一可靠方式:按 Ctrl+Shift+P → 输入 SFTP: Show Console,看原始 ssh/sftp 命令和错误输出,比如 Permission denied (publickey) 或 No such file。
upload_on_save + ignore_regexes 怎么防误传敏感文件
自动上传不是全量推,而是按当前文件路径与 remote_path 拼接后上传。所以关键在精准控制范围:
- 启用
"upload_on_save": true,但必须配合"ignore_regexes"排除高危文件 - 正则要锚定结尾:
"\.env$"、"config\.php$"、"\.git/"、"node_modules/" - 不要依赖
sync_down_on_open拉远端配置——它不会 merge,只会覆盖本地,且默认关闭 - 大文件(如打包产物、日志)必须排除,否则保存时 UI 卡顿,示例:
"\.log$"、"\.min\.js$"
真正危险的不是上传失败,而是上传成功却传错了东西——比如把本地调试用的 .env.local 覆盖了线上的 .env。每次改 ignore_regexes 后,建议手动删掉远程对应文件,再试一次上传,确认过滤逻辑生效。

















