如何判断在vim中保存文件后是否进行了修改

8
我正在尝试通过记录时间戳来量化我的vim操作,当保存(:w)文件时记录时间戳。
是否有可能知道自上次保存以来文件是否真的被编辑过?
例如,我通过:w保存文件,然后什么也没做,只是再次输入:w保存它,是否有可能判断文件实际上没有被修改?

对于使用neovim编写lua的用户,建议尝试使用 vim.bo.modified - VimNing
5个回答

7

当文件被修改时,Vim会在文件名旁显示“[+]”。但是,即使磁盘上的文件和缓冲区中的文件没有任何区别(例如,如果您添加字母'a',然后再将其删除,它也会认为文件已被编辑),它仍然会显示。


2
但是如果你执行撤销操作,[+]符号会再次消失。 - mkrieger1
1
啊,这就是我在寻找的。谢谢。 - The Vivandiere

6
您可以检查'modified'选项的值:
if &modified
    " do something if the buffer is modified
else
    " do something else if it is not
endif

5
如果你在Vim中将laststatus设置为2,它会在窗口底部显示一个状态行,当文件自上次写入以来被修改时,文件名旁边会显示一个[+]指示符。
相关帮助页面:laststatusstatusline

但是我该如何从vim脚本中捕获它呢? - Alaya
我不知道你想从脚本中获取这些信息。 romainl的答案 似乎是你要找的。 - mkrieger1

4

按下:file,如果发生更改,文件名后面将显示[已修改(Modified)]。


2
您还可以使用 :f 快速显示该提示。 - joshpetit
2
另外,根据 POSIX vi 规范,^G 也可以执行相同的操作。 - Kajukenbo

0

在阅读您的答案之前,我认为它是关于知道文件是否在保存之前从另一个vim实例/编辑器中进行了更新!

如果是这样,vim通常会在我想要保存它时告诉我:

警告:自vim读取文件以来,文件已被更新!

您是否仍要写入它(y/n)?

如果只是想知道上次以来是否更改了任何内容,正如之前所述,Vim将在文件名后显示[+]


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