sublime text 本身不支持 sftp 远程开发,需通过 sftp 或 sftp-next 插件实现本地编辑+自动上传;关键在于项目已绑定、sftp-config.json 由右键“map to remote…”自动生成于项目根目录、ssh 认证正确,三者缺一不可。

Sublime Text 本身不支持 SFTP 远程开发,所谓“连接服务器”其实是本地编辑 + 自动上传的模拟流程;能跑起来的关键不是插件装了没,而是项目结构、配置位置、SSH 认证三者是否同时满足。
右键没出现 SFTP 菜单?检查项目绑定和文件夹层级
插件不会在任意场景下激活:它只响应「已添加到项目的顶层文件夹」的右键操作,不认单个文件、桌面打开的文件、或“打开文件夹”这种临时视图。
- 必须通过 Project → Add Folder to Project 把本地目录加进项目,且该目录要出现在侧边栏最顶层
- 右键对象只能是那个文件夹图标本身,不是里面某个
.js文件,也不是侧边栏空白处 - 如果用的是 ST4(Build 41xx),必须装
SFTP-Next,原版SFTP会直接报ImportError: No module named 'urllib3' - 装完插件后务必重启 Sublime Text,否则 Project 菜单里都看不到 SFTP 项
sftp-config.json 放哪、怎么写、为什么静默失败
这个文件不是全局配置,也不接受手动创建——插件只读取通过右键 Map to Remote… 在项目根目录自动生成的 sftp-config.json。名字大小写、路径、内容格式错一个就失效。
- 文件名必须严格为
sftp-config.json(不能是SFTP-config.json、sftp_config.json或带空格) -
remote_path必须以/开头,结尾建议也加/(如"/var/www/html/"),否则路径拼接会偏移 -
ssh_key_file支持~展开(如"~/.ssh/id_rsa"),但不识别$HOME或其他环境变量 - 同时写了
password和ssh_key_file?SSH 层会直接拒绝,错误信息只显示Authentication failed,无具体提示
upload_on_save 不生效?先确认这四件事
实时同步不是开关一开就自动跑,它依赖隐性上下文:项目已保存、路径匹配、认证成功、超时容忍足够。
-
upload_on_save必须放在配置文件根层级,不能嵌套在files或sync_down_on_open下面 - 当前文件必须属于已保存的项目(即存在
.sublime-project文件),且该文件路径需能被remote_path规则覆盖(比如配了"/var/www/html/",但你在/src/index.js编辑,就不会上传) - 网络抖动或服务器响应慢时,默认 3 秒超时会导致静默失败;可在配置中加
"timeout": 10提高容错 - 上传后远程权限变成
600?补上"default_permissions": "644"(文件)或"default_permissions": "755"(目录)
中文文件名下载失败、remote_encoding 报错
这类问题通常不是连接失败,而是编码协商不一致导致的协议层中断,尤其在旧系统或非 UTF-8 默认环境里高频出现。
- 报
please adjust the remote_encoding?优先检查远程目录下是否有中文命名的文件或文件夹——SFTP 插件对非 ASCII 名称兼容性差,删掉就能过 - 若必须保留中文名,可在配置中显式指定:
"remote_encoding": "utf-8"(服务端需支持)或"remote_encoding": "gbk"(仅限 Windows Server) - 仍失败?换用
"type": "ftp"模式试试(需服务器开启 FTP),但注意 FTP 不加密,仅作临时排查 - 更稳的替代方案是改用
sshfs挂载远程目录为本地磁盘,再用 Sublime 打开——绕过插件所有路径/编码逻辑
真正卡住人的从来不是配置项本身,而是「以为配对了」和「实际触发条件没凑齐」之间的那层薄纸。比如 ssh_key_file 路径对了,但权限不是 600;比如 remote_path 看似正确,但少了个末尾 / 导致整个路径错位——这些细节不报错,只静默失效。











