Vim的行为在保存文件方面有所不同

时间:2019-02-07 12:35:28

标签: linux vim

当前,我正在编写python脚本,以在Linux上使用pyinotify来实现文件监视。与其他工具的不同之处在于,使用审计日志来丰富输出。

在一些系统上,我的脚本像一个超级按钮一样工作,但是一个系统在使用vim编辑文件时显示了另一种行为:在某些系统上,文件是使用

编写的
/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE
/etc/login.defs MODIFY
/etc/login.defs OPEN
/etc/login.defs MODIFY
/etc/login.defs MODIFY
/etc/login.defs CLOSE_WRITE,CLOSE
/etc/login.defs ATTRIB
/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE
/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE

那很好,因为差异化文件会导致干净的结果。在其他系统上,vim在写入文件时的行为如下:

/etc/login.defs MOVE_SELF
/etc/login.defs ATTRIB
/etc/login.defs DELETE_SELF
...
creating a new file

有人可以解释为什么vim会显示这种行为,以及我如何能够迫使我的测试系统上的vim行为相同,以便我能够处理它?<​​/ p>

环境: 德班9.7 vim版本:2:8.0.0197-4 + deb9u1

1 个答案:

答案 0 :(得分:0)

由于Vim的备份选项,我认为您会看到不同的结果。默认情况下,Vim会移走原始文件,将更新的文件内容写入另一个(临时)文件名,然后将其重命名为原始文件,最后删除移走的原始文件。这样可以确保即使在两次故障之间都不会发生任何数据丢失。

该行为由'backup''writebackup' Vim选项控制。有关详细说明,请参见:help backup-table

对于 intify 观察,默认行为是有问题的。您可以尝试:set nowritebackup,但这会增加数据丢失的风险,除非您也:set backup