sublime text无内置只读模式,唯一可靠方式是操作系统级权限设置:windows勾选“只读”并全应用,macos勾选“锁定”,linux/macos执行chmod a-w;设后状态栏显示read only,ctrl+s直接报permission denied。

Sublime Text 本身没有“把特定文件设为只读模式”的内置功能,所有真正生效的只读状态都来自操作系统对文件权限的限制——你必须先让系统拒绝写入,Sublime 才会显示 read only 并在 Ctrl+S 时直接报 Permission denied。
怎么让 Sublime 正确识别并强制只读
关键不是在 Sublime 里点开关,而是确保文件在被打开前,其权限位已被系统锁定:
- Windows:右键文件 → “属性” → 勾选“只读” → 点“应用”,再务必勾选“将更改应用于此文件夹、子文件夹和文件”(否则同目录下新建/复制的文件不继承)
- macOS:右键 → “显示简介” → 滚动到底部 → 勾选“锁定”(注意不是“共享与权限”里的读写设置)
- Linux/macOS 终端:
chmod a-w filename(必须是a-w,不是-w;少个a只改当前用户,组或其他人仍可写)
设完立刻生效:Sublime 底部状态栏变灰显示 read only,编辑后按 Ctrl+S 弹窗报错 Unable to save <filename>: Permission denied</filename>,不缓存、不提示放弃修改——这是唯一不可绕过的防护。
为什么 view.set_read_only(True) 和插件不能替代系统权限
这类操作只改 Sublime 内部视图标记,不触碰文件系统权限:
-
view.set_read_only(True)可被 Python 控制台一行代码绕过:view.set_read_only(False) - Read Only Mode 插件启用后,标签页标题加
[readonly]、禁用粘贴和删除,但双击侧边栏替换内容、拖放覆盖、甚至热退出后恢复编辑,它都拦不住 - 保存流程走的是系统
fopen(path, "w"),内核返回EPERM才真失败;插件的on_pre_save事件根本收不到——因为系统级拒绝发生在插件介入之前
临时查看配置或日志时怎么安全打开
别信 subl --command "set_read_only" 这类命令——它不是 Sublime 内置命令,需手动注册、重启即失效、稳定性差。可靠做法是用脚本封装系统命令:
- Linux/macOS:
chmod a-w config.yaml && subl config.yaml && chmod u+w config.yaml(开完自动解锁) - Windows PowerShell:
attrib +R config.yaml; subl config.yaml; attrib -R config.yaml - 如果文件很大(如 GB 级日志),还需加降级配置防卡顿:在用户设置中加入
"binary_file_patterns": ["*.log"],让 Sublime 跳过语法高亮和全文索引
真正起作用的那一步,永远是你双击打开 Sublime 前——文件是否已被系统锁定。任何“先打开再设只读”的操作,都在 Ctrl+S 那一刻当场暴露缺陷。











