如何使缓冲区在 Sublime Text 2 中具有只读

How to make a buffer have a read-only in Sublime Text 2

这不是关于那些在 OS 级别设置了只读标志的文件,而是关于用户不打算修改的每个文件。

我希望 Sublime Text 忽略任何更改并防止将任何内容保存到此类文件中。这种情况的一个例子是当用户正在阅读无论如何都不应更改的源代码时。

"Just be really careful, and don't press any buttons" 无疑是个好建议,但如果我要 "accidentally" 删除评论前面的那个 octothorpe,或者向对此类内容敏感的文件添加新行(一些Linux) 中的配置文件,然后不小心点击了保存....

我在 GitHub 找到了“toggle-readonly”,但它实际上是在切换文件权限("Read Only"、"Write"),这不是我想要的.

是的,这是可能的,但您必须编写一个插件(这实际上并不难,特别是如果您知道 Python)。 sublime 模块中的 API call is view.set_read_only(flag),其中 Flag 是布尔值。这是一个快速示例,它检查新打开的文件是否具有特定后缀,如果是,则将其设置为只读。

import sublime
import sublime_plugin


class MakeViewReadOnlyCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if self.view.file_name().endswith(".cfg"):
            self.view.set_read_only(True)


class ConfigFileListener(sublime_plugin.EventListener):
    def on_load(self, view):
        view.run_command("make_view_read_only")

使用 Python 语法打开一个新文件,将代码复制到其中,根据需要进行更改,然后将其作为 make_view_read_only.py 保存在您的 Packages/User 目录中。重新启动 Sublime 以加载它,你应该已经准备就绪。要测试某个视图是否为只读,请打开控制台并输入

view.is_read_only()

插件“Toggle the View Read-Only”可以做到。它基本上做了 MattDMo 所说的:当您将视图设置为只读时,文件仍然可以被另一个程序(或另一个用户)更改,并且 Sublime Text 将获取这些更改。它还具有您要求的上下文菜单项。我喜欢状态栏中的 "Readonly" 指示器。

我没有在 Sublime Text 2 上测试它,但在 Sublime Text 3 中它运行良好,并且它声称也可以在 Sublime Text 2 上运行。