Sublime Text本身不支持原生远程编辑,仅能通过SFTP插件(本地缓存+同步)或rsub反向隧道(远程直传+直写)实现,二者机制互斥、不可混用。

Sublime Text 本身不支持原生远程编辑,所有“远程项目编辑”都依赖外部协议和插件配合;真正可用的只有两种路径:SFTP 插件同步文件,或 rsub 反向隧道代理打开。二者机制完全不同,混用会丢文件。
为什么 subl user@host:/path 打不开远程文件
Sublime 的 subl 命令只识别本地路径和 file:// URL,完全忽略 SSH URI 格式。你执行 subl user@server:/var/www/index.php,它不会报错,也不会打开文件——大概率弹出空白窗口或静默失败。这不是配置问题,是 Sublime 内核根本不解析主机前缀。
所有远程编辑方案都必须绕过这个限制:
- SFTP 插件:把远程文件拉到本地临时缓存,编辑后上传,走的是“本地编辑 + 同步”流
- rsub:靠 SSH 反向端口转发(
-R 52698:localhost:52698),让远程命令触发本地 Sublime 打开,走的是“远程内容直传 + 直写”流
sftp-config.json 中 remote_path 不能写 ~
remote_path 字段不支持 shell 展开,"~/project" 会被当字面量拼接,最终尝试访问服务器上的 /home/user/~/project,结果要么空目录,要么报错。
必须写绝对路径:
- 登录服务器后执行
echo $HOME或pwd确认主目录 - 填成
"/home/deploy/myapp"或"/var/www/html" - 改完
sftp-config.json后必须重启 Sublime Text——插件不热重载配置
sync_down_on_open 设为 true 很危险
开启 sync_down_on_open: true 意味着每次双击项目里一个文件,Sublime 就自动从服务器下载覆盖本地副本。协作场景下极易丢代码:比如你刚改了 config.js 还没提交,同事在服务器上更新了它,你一打开就直接被覆盖。
仅建议在以下情况启用:
- 单人维护静态资源(如纯 HTML/CSS 站点)
- 本地不做任何修改,只读查看日志或配置
- 明确接受“打开即以远程为准”的工作流
更安全的做法是关掉它,需要同步时右键 → SFTP → Download File 手动拉取。
rsub 和 SFTP 插件不能共存于同一项目
rsub 编辑的文件保存时直接写回远程磁盘,不经过本地文件系统,也不触发 SFTP 插件的 upload_on_save 钩子;而 SFTP 映射目录下的文件保存先落本地、再上传。如果两个机制同时作用于同一个远程路径,极可能发生覆盖冲突——比如你用 rsub 改完并保存,几秒后 SFTP 又把旧的本地副本上传覆盖过去。
务必分开使用:
- 日常开发用 SFTP +
upload_on_save: true,本地有完整副本,可控性强 - 临时查日志、改配置、无本地备份需求时用 rsub,速度快但无回退保障
- 不要在同一个项目根目录下既配了
sftp-config.json,又频繁用rsub打开文件
最常被忽略的一点:rsub 保存失败时只报 Permission denied,不会提示具体是哪个目录权限不够——得去服务器上手动 ls -ld /path/to/dir 检查父目录是否对当前用户可写。


















