我相信它是设计为原子性的,我听说vim将保存到临时目录,然后使用mv
命令将临时文件覆盖旧文件,以确保旧版本或新版本的任一版本都存在,并且即使在保存过程中断电也不会出现半个文件或没有文件。
有人有更多细节吗?
我相信它是设计为原子性的,我听说vim将保存到临时目录,然后使用mv
命令将临时文件覆盖旧文件,以确保旧版本或新版本的任一版本都存在,并且即使在保存过程中断电也不会出现半个文件或没有文件。
有人有更多细节吗?
backupcopy
,在Unix系统上,默认为yes
,在其他系统上,默认为auto
。只有在设置为no
时,您才可以确保写入会像问题中那样进行。当设置为yes
时,vim将在创建备份副本后覆盖原始文件内容。如果设置为auto
,则如果检测到可以传递属性且文件不是链接(符号链接或硬链接),它将像问题中那样运行。此选项还有其他值可使其断开链接,请参阅该选项的帮助。backup
、writebackup
。必须设置其中至少一个才能制作备份。如果没有备份,则会覆盖原始文件内容。只要vim编译时支持它,writebackup
选项就默认为打开状态。还有backupskip
选项,它指定了一个文件模式列表,其中不会进行备份;如果其中一个模式与文件匹配,则不会进行备份,并且会覆盖原始文件内容。关于一般的方法,你是正确的;更多信息请参见:help backup
。
你可以通过设置来微调方法;当你处理硬编码文件或使用像inotify这样的API来响应文件系统变化时,这一点非常重要。
此外,交换文件(:help swap-file
)和持久撤消(:help persistent-undo
)可以帮助你避免任何数据丢失,即使发生磁盘崩溃的情况下也是如此。