sublime text 无法真正编辑十六进制——hexviewer 插件仅支持只读查看,修改后保存会将字符串当文本处理导致文件损坏;专业编辑应使用 hxd、bless 或 010 editor。

Sublime Text 不能配置成十六进制编辑器——它根本不是为二进制编辑设计的,所有“Hex 编辑”相关尝试都会在保存环节失败。
HexViewer 插件只能查看,不能编辑
安装 HexViewer 后执行 HexViewer: Toggle Hex View 或 HexViewer: View in Hex,看到的是字节的字符串表示(例如 48656c6c6f),不是原始字节流。你在里面把 65 改成 66,Sublime 会把它当文本保存成两个字符 "6" 和 "6",而不是一个字节 0x66。结果是文件损坏,不是编辑成功。
插件界面右下角始终显示 Hex Viewer (read-only),这不是提示,是强制限制。
- 命令面板搜不到
HexViewer?检查是否拼错成Hex View、HexEditor或大小写错误(正确是HexViewer) - 双击
.bin文件没反应?Sublime 默认拒绝加载二进制内容,必须先新建空白页 → 命令面板触发 → 手动选文件 - 已打开的
.txt文件里全是乱码,也触发不了 Hex 视图?因为 Sublime 仍将其识别为文本,临时重命名为xxx.bin再试
大文件打不开或显示空白?别怪插件,先看编码和配置
HexViewer 默认对超 10MB 的文件启用流式加载,但很多固件/加密 blob 开头含 \x00\x00\x9f 这类非法 UTF-8 前缀,导致解析中断,现象是标签页空白或报 invalid start byte。
- 修改配置:菜单
Preferences → Package Settings → HexViewer → Settings,加入:"max_file_size": 104857600
(单位字节,即 100MB) - 仍失败?用终端预处理:
xxd -g1 yourfile.bin | subl -(macOS/Linux),或 Windows 上用certutil -encodehex -f yourfile.bin stdout 4 | head -n 16查前几行确认数据可读 - 不要指望
File → Reopen with Encoding → Hexadecimal—— Sublime 根本没有这个编码选项,那是误传
真要编辑十六进制,得绕开 Sublime 的文本层
Sublime 的核心限制在于:它读写文件依赖编码器(如 UTF-8 decoder),而二进制数据没有编码定义。所以任何“在 Sublime 里改 Hex 再保存”的路径都不可靠。
- 推荐组合:用
xxd -g1 file.bin > file.hex导出可读 Hex 文本 → 在 Sublime 里编辑注释、搜索替换 → 保存后运行xxd -r -g1 file.hex > file_new.bin还原 - 直接编辑用专业工具:Windows 用
HxD,Linux 用Bless,跨平台首选010 Editor(支持结构模板、校验和、内存映射) - 想在 Sublime 里辅助分析?把 HexViewer 导出内容粘贴进来加行内注释,比如在
00000010: 48656c6c6f20776f726c64下面写// "Hello world" string
真正容易被忽略的点是:Sublime 对文件类型的判断基于扩展名 + 内容启发式检测,不是单纯看后缀。哪怕你把 firmware.bin 改成 firmware.txt,只要开头是合法 UTF-8,它就坚持当文本加载——HexViewer 不会响应。反过来,一个纯 ASCII 的 config.log 若含 \x00,也可能被跳过。最终决定权不在你命名,而在 Sublime 的内部解析逻辑。











