远程保存卡顿主因是sublime默认启用index_files全量扫描远程路径,导致上万次高延迟stat调用;须彻底关闭index_files并杀进程重启,同时优化sftp配置与禁用阻塞插件。

为什么远程保存会卡住几秒?
根本不是网络慢,而是 Sublime 默认用 index_files 全量扫描你映射的远程路径(比如 /mnt/c/ 或 SFTP 项目根目录),每次保存前都要 stat 上万文件——而这些路径走的是 9P 协议或 SSH 隧道,单次系统调用延迟高达 300–500ms。遇到 node_modules 或 .git,on_post_save 就在后台排队堵死主线程。
必须关掉 index_files,且彻底重启
只在用户设置里加 "index_files": false 不够,Sublime 会缓存旧索引状态。操作必须完整:
- 打开 Preferences → Settings(右侧 User Settings),加入:
"index_files": false - Windows:进任务管理器,确认所有
sublime_text.exe进程已退出;macOS:用活动监视器查subl进程 - 重新启动 Sublime,再打开项目测试保存响应
注意:关掉后 Ctrl+R(函数跳转)失效,但 Ctrl+P(文件名搜索)和 Ctrl+Shift+F(文本搜索)完全不受影响。
SFTP 插件配置不当会放大延迟
很多人开了 "upload_on_save": true,却没排除大目录,导致每次保存都触发同步 + 索引双重扫描。关键调整点:
- 在项目级
sftp-config.json中显式排除:"folder_exclude_patterns": ["node_modules", ".git", "dist"] - 禁用
"sync_down_on_open": true(打开即拉取),它会在初始阶段反复 stat 远程文件 - 改用 SSH 密钥认证,删掉
password字段——明文密码会触发额外的加密校验开销 - 确保
remote_path指向实际部署目录(如/var/www/html),别指向整个家目录,否则 SFTP 插件会尝试遍历所有隐藏文件
插件在 on_post_save 里偷偷干活
GitGutter、sublime-lsp、SublimeLinter 这类插件,只要项目路径是远程挂载点(/mnt/c/xxx 或 SFTP 映射目录),就会在每次保存时尝试访问 Git 状态或 LSP server——而这些请求全要穿过协议层,极易超时卡顿。
快速验证方法:
- 按
Ctrl + `打开控制台,清空后保存一个文件 - 盯住顶部新日志:如果看到
GitGutter: updating status或LSP: sending textDocument/didSave后停顿 2 秒以上,就是它们 - Preferences → Package Control → Disable Package,先禁用 GitGutter 和 sublime-lsp,再测试
- 对 GitGutter 可折中处理:在它的 User Settings 里加
"non_blocking": true,让它异步执行
最硬的边界:只要 df -T . 显示 ext4,且 index_files 关闭,远程编辑的延迟就只取决于 SSH 带宽和服务器磁盘 I/O,跟 Sublime 本地索引行为彻底脱钩。











