最好的办法是确保您的源代码被某种源代码控制所覆盖,例如git 或Subversion;一般来说,这总是一个好主意,与您的特定问题无关。将代码置于源代码控制下意味着当您编辑文件(意外或故意)时,您可以准确地看到您编辑的内容或丢弃这些编辑内容,如果您愿意,可以返回到您拥有的内容。如果您还将代码推送到外部服务器,例如GitHUb(如果您使用git),那么您还可以对代码进行便宜且简单的异地备份。
也就是说,如果您想让文件不可编辑,那么文件系统的工作比您用来编辑文件的工具(在本例中为 Sublime Text)更多。
所有文件系统和操作系统都应该有read-only 文件的概念,这听起来像你想要的。被标记为只读的文件可以防止您意外修改它;根据您使用的软件,编辑要么不可能,要么需要确认。
在您的情况下,您可以通过几种不同的方式执行此操作。如果您只想保护几个文件,那么您可以右键单击 并选择Properties;在General 选项卡的底部有一个复选框,您可以选中该复选框以将该文件设为只读:
如果你有很多文件,你可以通过编辑包含代码的文件夹的属性来做同样的事情:
当您对文件夹执行此操作时,属性集的工作方式略有不同;由于您正在修改整个文件夹,因此您需要单击该框两次以将其从正方形(如上所示)更改为复选标记。当您应用更改时,系统会询问您是否只想将该目录中的文件设为只读,或者将该文件夹中的所有文件以及该文件夹下的所有文件夹设为只读;酌情选择。
Sublime 可以让你打开read-only 文件,也可以让你修改它们的内容,但是当你尝试保存时,你会得到一个警告对话框,告诉你文件是write-protected;您需要确认是否要实际保存更改; (其他软件可能不会提示这样的对话框,可能会失败):
如果选择保存,则会删除read-only属性,让文件再次正常。
如果你想让一个文件完全不可编辑,这样你甚至不会意外更改文件,你可以通过一个简单的插件结合制作文件 read-only 来实现这一点(请参阅 this video '不确定如何应用插件):
import sublime
import sublime_plugin
import os
class ReadOnlyListener(sublime_plugin.EventListener):
def on_load(self, view):
if (os.path.exists(view.file_name())
and not os.access(view.file_name(), os.W_OK)):
view.set_read_only(True)
编辑: 内部View Package Files 命令将透明地打开来自sublime-package 文件的包资源,并为它们提供一个文件名,该文件名表示如果它们不在包文件中,它们将在磁盘上的位置。
原始答案中的插件会通过指出该文件不可写(因为它在磁盘上不存在)并使view 只读,从而停止文件,从而阻止您使用此命令因为view无法修改,所以内容无法显示。
仅在文件实际存在于磁盘上时才采取措施,在上面的编辑中对此进行了纠正(View Package File 命令已经使文件以read-only 这种方式加载,如果它们不存在于磁盘上)。
这会创建一个事件侦听器,每次打开文件时都会检查文件是否可写,如果不是,则创建视图read-only。这种区别是 Sublime 特有的;无论文件的底层状态如何,您根本无法对此类文件进行任何更改。即使您没有进行任何更改,这也不会阻止您保存文件,这将具有与上述相同的效果。