Sublime Text 无内置只读保护模式,只读状态完全由操作系统权限决定;需通过系统命令(如chmod 444、Windows属性勾选、macOS锁定)设置文件权限,编辑器仅被动反映stat()结果并报错。

Sublime Text 没有“开启只读保护模式”这回事——所谓只读,全是操作系统说了算,编辑器只是照实显示、照实报错。
为什么 Sublime 里点几下设不了只读
Sublime 的保存流程直接调用系统 fopen(, "w"),内核返回 EPERM 或 Permission denied 时,它连重试都不做。所有插件里写的 on_pre_save 拦截、set_read_only 命令、甚至用户设置里加 "read_only": true 字段,全无效:这些操作不改文件权限位,Ctrl+S 时照样被系统拒之门外。
- 状态栏显示
read only,只是 Sublime 对stat()返回的st_mode位(如S_IWUSR)的被动反映 - 你双击打开文件前,文件是否已被系统锁定,决定了后续一切行为
- 任何“编辑器内开关”方案,在 Ctrl+S 那一刻都会崩,不是延迟失效,是当场失败
Windows/macOS/Linux 各自必须做的系统级操作
只读生效的前提,是让操作系统拒绝写入。以下操作做完,Sublime 才会同步显示 read only 并弹出 Permission denied 错误。
- Windows:右键文件 → “属性” → 勾选“只读” → 点“应用”,再勾选“将更改应用于此文件夹、子文件夹和文件”(否则同目录下其他文件漏锁)
- macOS:右键 → “显示简介” → 滚动到底部 → 勾选“锁定”
-
Linux:终端执行
chmod 444 /path/to/file(注意是444,不是644;a-w也可,但444更彻底)
打开前就锁死:临时查看配置/日志的可靠流程
对 CI 日志、config.yaml、导出的 SQL 文件这类“只读一次”的场景,靠手动点鼠标太慢,容易忘。推荐脚本化或终端直连:
- 终端一行搞定:
chmod 444 config.yaml && subl config.yaml - 关闭后想恢复可写?别依赖 Sublime 自动还原,得自己补一句:
chmod u+w config.yaml - SideBarEnhancements 插件右键能调终端执行
chmod,但它只是快捷入口,底层仍是系统命令,不是 Sublime 功能 - 别信网上搜到的
subl --command "set_read_only"——这不是 Sublime 内置命令,需手动注册、重启即失效、无维护保障
大文件只读 + 降级模式防卡死
打开 GB 级日志时,光设只读还不够。Sublime 若按常规逻辑加载全文+语法高亮+行号,极易卡死。必须配合用户设置强制降级:
- 先用系统命令锁文件:
chmod 444 app.log && subl app.log - 在
Preferences → Settings – User中添加:{"draw_white_space": "none","word_wrap": true,"auto_complete": false,"highlight_line": false} - 这几项禁用高开销功能,配合只读状态,才能真正实现“打开快、不卡、不能改”
- 别加
"save_on_focus_lost": true——只读文件不会触发保存,但该字段若存在,可能干扰 AutoSave 插件行为
最常被忽略的一点:只读状态不继承、不传播、不自动识别 Git 状态。刚 git pull 下来的文件,VSCode 或 IDE 可能因 Git 索引状态做提示,但 Sublime 完全不管——它只看 stat() 结果。你得亲手锁,它才认。

















