vim如何保存文件?

时间:2012-11-26 11:10:29

标签: vim filesystems

我相信它的设计是原子的,我听说vim将保存到一个临时目录,然后mv临时文件覆盖旧文件,以确保旧版本或新版本是即使在保存期间关闭电源,也不会有一半或根本没有文件存在。

有没有人有更多细节?

2 个答案:

答案 0 :(得分:7)

如何完成这取决于几个选项的值。

影响此问题的主要选项是backupcopy,在unix系统上,默认为yes,默认为auto。只有将其设置为no,才能确保写入将像您的问题一样完成。设置为yes时,vim会在制作备份副本后覆盖原始文件内容。如果设置为auto,如果它检测到可以传递属性且文件不是链接(符号链接或硬链接),则其行为与问题相同。使其中断链接的选项还有其他值,请参阅该选项的帮助。

影响此问题的其他选项包括backupwritebackup。必须至少设置其中一个才能进行备份。如果未进行备份,则将覆盖原始文件内容。只要vim在编译时支持它,writebackup选项就默认为on。还有backupskip选项,它指定了不进行备份的文件模式列表;如果其中一个模式与文件匹配,则不会再进行备份,原始文件内容将被覆盖。

答案 1 :(得分:4)

你对一般方法是正确的;有关详细信息,请参阅:help backup

您可以通过设置微调方法;当您处理硬文件或使用 inotify 等API来响应文件系统更改时,这一点非常重要。

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