Sublime Text无法真正编辑十六进制,HexViewer插件仅支持手动触发的只读查看;需确认命令面板中出现“HexViewer: View in Hex”,认准facelessuser版本,安装后执行“Package Control: Satisfy Dependencies”,双击二进制文件无效,须新建空白页后调用命令并手动选文件,大文件需调大max_file_size且仍受限于底层解析能力。

Sublime Text 不能直接以十六进制方式加载或编辑二进制文件——它不是设计来干这事的;HexViewer 插件只提供只读查看,且必须手动触发、无法双击打开,装错版本或跳过依赖检查就等于没装。
怎么确认 HexViewer 真装对了
很多人以为搜到“HexViewer”就完事了,其实命令面板里没出现 HexViewer: View in Hex 就等于插件压根没加载成功:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入HexViewer,必须看到带冒号的完整命令(如HexViewer: View in Hex),而不是只有“Hex View”或“Hex Editor” - 认准作者是
facelessuser的版本,GitHub 仓库名就是HexViewer,别选拼写近似但功能不全的其他插件 - 安装后建议立刻执行一次
Package Control: Satisfy Dependencies,否则某些依赖未就绪会导致插件静默失效 - 不用重启 Sublime,但改完设置或装新插件后,如果命令不出现,
Ctrl+Shift+P→Package Control: Reload Package可强制重载
为什么双击 .bin/.exe 文件打不开,以及正确打开流程
Sublime 默认拒绝解析含 \x00 或非法 UTF-8 字节的文件,双击只会显示空标签页、报 Error loading file 或直接静默失败——这不是文件坏了,是编辑器策略。
- 正确流程:先按
Ctrl+N新建空白文件 →Ctrl+Shift+P→ 输入并执行HexViewer: View in Hex→ 弹出系统对话框手动选中你的firmware.bin或test.exe - 如果已打开一个文本文件(比如
log.txt),插件可能跳过解析逻辑;临时把文件重命名为test.bin再试,能绕过 Sublime 对扩展名的文本白名单限制 -
HexViewer: Toggle Hex View是切换当前已加载文件的视图,但前提是该文件已被 Sublime 成功加载为文本——对纯二进制文件无效,别指望它对乱码标签页起作用
大文件打不开、显示空白或报 invalid start byte 怎么办
默认 max_file_size 是 10MB,且 HexViewer 对文件头部字节敏感:开头是 \x00\x00\x9f 这类非法 UTF-8 前缀时,流式解析会中断,导致界面空白或报错。
- 在
Preferences → Package Settings → HexViewer → Settings中修改:"max_file_size": 50000000(单位字节,即约 50MB) - 但超过 100MB 后加载明显变慢,甚至卡死;这不是 bug,是 Sublime 底层对大 buffer 的处理限制
- 若仍报
invalid start byte,说明文件前几个字节触发了 Python 的 UTF-8 解码失败;可尝试用xxd yourfile.bin | head -n 50先确认头部结构,再决定是否值得在 Sublime 里硬扛 - 真正要分析 >100MB 的固件或磁盘镜像,别折腾 HexViewer,直接用
HxD(Windows)、Bless(Linux)或 VS Code +Hex Editor扩展
HexViewer 能不能编辑十六进制?为什么不能直接改保存
不能。任何在 HexViewer 视图里手动修改十六进制列并保存的行为,都会把整行当文本字符串处理,导致原始二进制结构被破坏——这不是操作失误,是底层机制决定的。
- HexViewer 渲染的是“从二进制解码后生成的文本快照”,不是内存映射或字节绑定视图
- 你看到的
00000000: ffd8 ffe0 0010 4a46...是插件拼出来的字符串,ffd8并不对应文件第 0 位的两个字节,只是格式化输出 - 保存时 Sublime 写入的是这个字符串本身(比如把
ffd8改成abcd,实际存的是字符abcd四个字节,而非字节0xab0xcd) - 真要编辑,得用
HxD、010 Editor或xxd -r配合 vim;Sublime 只适合辅助:复制 hex 列做注释、比对协议字段、查嵌入字符串位置
最常被忽略的一点:HexViewer 不监听文件外部变更。如果源文件被其他程序修改了,它不会自动刷新,必须手动重新执行 HexViewer: View in Hex —— 没有“实时同步”这回事。

















