uploadOnSave是SFTP插件独立开关,与VSCode的files.autoSave无关;二者需同时启用才能实现“保存即上传”,且uploadOnSave默认为false,必须显式设为true。

自动保存必须配 uploadOnSave 才能触发同步
很多人以为开了 VSCode 的 files.autoSave,SFTP 插件就会自动上传——其实不会。uploadOnSave 是 SFTP 插件自己的开关,和编辑器的自动保存完全无关。两者必须同时为 true,修改后才真正“落地又上云”。
常见错误现象:files.autoSave: "onFocusChange" 已启用,但改完文件切到终端,远程目录里还是旧内容。
-
uploadOnSave默认是false,必须手动设为true - 如果用了
afterDelay模式,files.autoSaveDelay建议设为 ≤1000(1秒),否则可能在上传前就被其他操作中断 - 若远程路径权限不足或磁盘满,
uploadOnSave失败时 VSCode 不报错,只在右下角状态栏闪一下“Upload failed”,容易被忽略
sftp.json 里 ignore 列表不支持正则,只认 glob
ignore 字段看着像能写正则,实际只接受 minimatch 语法的 glob 模式。写错会导致本该跳过的日志、缓存、临时文件全传上去,撑爆远程磁盘或拖慢同步速度。
典型误写:"**/*.log$"(带 $ 符号)、"logs/[0-9]{4}-[0-9]{2}"(用正则语法)——这些统统无效,会被当字面量处理,结果什么也不忽略。
- 正确写法示例:
"**/*.log"、"**/logs/**"、"**/node_modules/**" -
**表示递归匹配任意层级,*只匹配当前层单个目录或文件名 - 如果想排除某类文件但不确定路径深度,优先用
**/xxx而不是xxx,后者只排除项目根目录下的同名项
离线环境装插件,.vsix 文件名不能乱改
VSCode 安装时会从 .vsix 包内读取 package.json 中的 publisher 和 name 字段生成唯一 ID。如果你下载完把 ms-python.python-2024.10.1.vsix 改成 py.vsix,安装时可能提示“已存在同名插件”或直接失败——因为 ID 校验不通过。
更隐蔽的问题:多个版本插件共存时,VSCode 依赖文件名里的版本号做覆盖判断。重命名后它无法识别新旧关系,可能保留旧版、跳过新版。
- 下载后直接存档,保留原始文件名,例如
esbenp.prettier-vscode-13.5.0.vsix - 批量安装时用
code --install-extension命令,路径中不要含空格或中文,否则 Windows 下易出错 - 企业部署建议用脚本校验
.vsix内置签名:unzip -p xxx.vsix extension/package.json | grep -E 'publisher|name|version'
同步失败时别只看 SFTP 日志,先查 privateKeyPath 权限
SFTP 连接卡在 “Connecting…” 或报 Permission denied (publickey),90% 是私钥文件权限问题。Linux/macOS 下,~/.ssh/id_rsa 必须是 600 权限,否则 OpenSSH 拒绝加载;Windows 上虽然不校验权限,但路径中若含 OneDrive、iCloud 同步目录,可能因文件锁导致读取失败。
- 修复命令(Linux/macOS):
chmod 600 ~/.ssh/id_rsa - VSCode 里
privateKeyPath推荐用绝对路径,比如"/Users/xxx/.ssh/id_rsa",避免~展开失败 - 如果用密码登录,
password字段可写进sftp.json,但注意该文件默认明文存储,别提交到 Git


















