Sublime Text本身不支持直接远程文件比对,必须先下载副本再本地对比;需关闭SFTP插件的sync_down_on_open、统一换行符与编码,并用sha256sum校验一致性后方可可靠比对。

Sublime 本身不支持直接比对远程文件
它没有内置 FTP/SFTP 客户端,也没法直接读取远程路径内容。所有“远程对比”都得先让文件落地——要么用插件下载副本,要么用命令行拉取。别指望右键点一下就弹出 diff 窗口,那只会打开空白标签页或报错 Connection refused。
用 SFTP 插件下载后手动比对,但必须关掉 auto-sync
SFTP 插件(wbond 版)能连服务器,但它默认的 sync_down_on_open 配置一旦开着,你双击远程文件,本地同名文件就被覆盖了,根本没机会比。所以第一步是:打开 SFTP.sublime-settings,把这一行设为 false:
"sync_down_on_open": false
然后右键远程文件 → Download 到独立目录(比如 ./remote-backup/),别放工作区里。再用 Sublime 同时打开本地原文件 + 刚下载的副本,用 Compare Side-By-Side 或 Diffy: Compare with Active View 触发对比。
换行符和编码不一致会让整份文件标红
Linux 远程服务器默认用 \n,Windows 本地可能存成 \r\n;远程文件可能是 UTF-8,本地却是 UTF-8 with BOM。这两种情况都会导致 FileDiffs 或 Compare Side-By-Side 把每一行都判为差异。
- 统一换行符:菜单 →
View → Line Endings → Unix (LF),两边都切一遍 - 统一编码:状态栏右下角点编码名 →
Reopen with Encoding → UTF-8,别选带 BOM 的 - 验证是否生效:在两个文件里分别按
Ctrl+Shift+P输入show_scope_name,看输出里有没有line_ending和encoding字段一致
真正要命的是“你比的根本不是最新版”
时间戳靠不住——NFS 挂载、Docker 容器、甚至某些 SSHFS 实现里,mtime 可能滞后几秒甚至几分钟。SFTP 插件也不校验哈希,下载过程出错你根本不知道。
生产环境比配置前,务必加一步校验:
ssh user@host 'sha256sum /etc/nginx/conf.d/app.conf'
再在本地算一遍:
sha256sum ./local/app.conf
两个哈希值一样,才说明你手上的本地副本和远程当前内容真正一致。跳过这步,diff 结果再好看,也可能只是在比两份旧数据。


















