如果writebackup是,则启用(默认)

如果writebackup是,则启用(默认)

我读到过,当您真正想要保存对该文件的更改时,大多数编辑器都会替换该文件:如何在文件更改时执行命令?

Vim 的行为如何?

答案1

它可能取决于与 ' 相关的各种设置备份',所有内容都必须保留写入之前的文件副本。控制该操作的设置之一是:'备份副本':

当写入文件并进行备份时,此选项会告知如何完成。这是一个以逗号分隔的单词列表。

主要价值包括:

"yes"    make a copy of the file and overwrite the original one
"no"     rename the file and write a new one
"auto"   one of the previous, what works best

因此,根据你的 vimrc (backupset 和backupcopyto no),vim 可能会重命名一个文件。当

答案2

我观察到这个选项writebackup以及编辑的文件是否有多个硬链接改变了 Vim 在这方面的行为。

以下结果适用于在 Arch Linux 上使用 ext4 保存文件时使用 Vim 9.0.2167 和 Neovim 0.9.4 的情况:w

如果writebackup是,则启用(默认)

  • 编辑只有一个硬链接的文件:

    • inode 更改(文件已重新创建)
    • 更改时间戳访问、修改、更改和出生
  • 编辑具有多个硬链接的文件:

    • inode 保持不变
    • 硬链接保持完整
    • 出生时间戳保持不变。访问、修改和更改时间戳会发生变化

如果writebackup关闭(:set nowritebackup

  • inode 保持不变
  • 只有修改和更改时间戳会发生变化。访问和出生保持不变

另请参阅backup选项:

如果在启用“backup”、“writebackup”或“patchmode”选项的情况下向现有文件写入数据(但不附加数据),则会备份原始文件。文件将被复制或重命名(请参阅“backupcopy”)。在成功写入文件后,如果启用“writebackup”选项且禁用“backup”选项,则将删除备份文件。启用“patchmode”选项时,备份文件可能会被重命名。

'backup' 'writebackup'  action

off       off        no backup made
off       on         backup current file, deleted afterwards (default)
on        off        delete old backup, backup current file
on        on         delete old backup, backup current file

相关内容