sublime text不支持直接远程比对,需先下载远程文件并用sha256sum校验一致性,再通过diffy插件对比磁盘路径,或统一编码、换行符、缩进后用compare side-by-side比对已打开标签页。

Sublime Text 本身不支持直接比对本地与远程代码差异——所有所谓“远程对比”,本质都是把远程文件拉到本地后再做纯文本比对,中间没有校验、不防篡改、也不感知 Git 状态。提交合并请求前若靠它做 Code Review,极易漏掉关键差异。
远程文件怎么安全拉下来比?别信 SFTP 自动同步
很多人用 SFTP 插件右键 Download,以为这就拿到“远程版本”了,但问题在:sync_down_on_open 默认为 true,一打开就覆盖本地,根本没法比;更麻烦的是,SFTP 不校验哈希,只看 mtime,而 NFS、Docker 容器里 mtime 常不准。
- 先关掉
sync_down_on_open:打开SFTP.sublime-settings,设"sync_down_on_open": false - 手动下载时指定路径:右键远程文件 →
Download→ 存到./remote-backup/这类隔离目录,别和工作区混在一起 - 务必校验一致性:在终端跑
ssh user@host 'sha256sum /path/to/file',再对本地副本执行sha256sum ./remote-backup/file.py,两串值必须完全一致
比对前必须统一这三样东西
Compare Side-By-Side 或 Diffy 都不做自动归一化,BOM、换行符、缩进差异会直接导致整行标红,你以为改了逻辑,其实只是多了一个 \r。
- 编码:两个文件都右下角点编码名 →
Reopen with Encoding→ 选UTF-8(不是UTF-8 with BOM) - 换行符:菜单
View → Line Endings → Convert to Unix (LF),两边都执行 - 缩进:按
Ctrl+Shift+P→ 输入Convert Indentation to Spaces,统一成空格(或统一成 Tab,但不能混)
为什么 Diffy 比 Compare Side-By-Side 更适合 Code Review 场景
如果你要对比的是“当前未保存的修改版 vs 远程已部署版本”,Compare Side-By-Side 就卡住了——它只认已打开的标签页,而你远程文件还没打开;Diffy 支持磁盘路径直比,且能处理未保存内容的间接比对(先保存临时副本再比)。
- 右键侧边栏空白处 →
Diffy: Compare Files - 粘贴两个绝对路径,Windows 含空格路径必须加英文双引号:
"C:\proj\main.py" "/tmp/remote-main.py" - 乱码?先用
File → Reopen with Encoding手动指定编码,再重试 - 静默失败?大概率路径不存在——先在终端
ls或dir验证,别猜
真正影响 Code Review 质量的,是比对之外的事
插件再稳,也只告诉你“哪几行字不同”,不会告诉你“这行删掉会不会让下游服务 500”。提交合并请求前,得补上机器不做的判断:
- 确认远程文件是否真属目标环境:是 staging 还是 prod?容器里挂载的是 ConfigMap 还是 Secret?
- 检查 diff 是否含敏感变更:硬编码密钥、调试日志、未授权的
print()或console.log() - 留意被忽略的语义差异:比如
==和===、len()和count()、字段名拼写修正——这些在纯文本 diff 里就是“一行替换”,但影响巨大
比对工具只是放大镜,不是决策者。你得盯着红块背后,问一句:“这个变化,在我们线上真实运行时,到底会发生什么。”











