vim如何保存文件?

8

我相信它是设计为原子性的,我听说vim将保存到临时目录,然后使用mv命令将临时文件覆盖旧文件,以确保旧版本或新版本的任一版本都存在,并且即使在保存过程中断电也不会出现半个文件或没有文件。

有人有更多细节吗?

2个回答

7
这是如何完成的取决于多个选项的值。
主要影响这一点的选项是backupcopy,在Unix系统上,默认为yes,在其他系统上,默认为auto。只有在设置为no时,您才可以确保写入会像问题中那样进行。当设置为yes时,vim将在创建备份副本后覆盖原始文件内容。如果设置为auto,则如果检测到可以传递属性且文件不是链接(符号链接或硬链接),它将像问题中那样运行。此选项还有其他值可使其断开链接,请参阅该选项的帮助。
影响这一点的其他选项是backupwritebackup。必须设置其中至少一个才能制作备份。如果没有备份,则会覆盖原始文件内容。只要vim编译时支持它,writebackup选项就默认为打开状态。还有backupskip选项,它指定了一个文件模式列表,其中不会进行备份;如果其中一个模式与文件匹配,则不会进行备份,并且会覆盖原始文件内容。

4

关于一般的方法,你是正确的;更多信息请参见:help backup

你可以通过设置来微调方法;当你处理硬编码文件或使用像inotify这样的API来响应文件系统变化时,这一点非常重要。

此外,交换文件(:help swap-file)和持久撤消(:help persistent-undo)可以帮助你避免任何数据丢失,即使发生磁盘崩溃的情况下也是如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接