我在此网页上找到了一个很好的解决方案,该解决方案 创建了一个vim函数来保存当前文件,同时保留现有的修改时间,并将该函数绑定到F4功能键:
但是,我发现原始函数包含一个小错误,如果F4在同一文件上使用两次,则会触发以下警告,因为修改时间更改时vim会感到困惑:
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
幸运的是,这很容易解决:我在原始函数中添加了一个“ edit”命令,以在恢复时间戳后重新加载文件,因此vim知道期望文件具有的修改时间。
这是带有此错误修复程序的经过修改的vim函数,可以将其添加到~/.vimrc
:
function! WriteSmall()
let mtime = system("date -d @`stat -c %Y ".shellescape(expand('%:p')) . "`")
write
call system("touch --date='".mtime."' ".shellescape(expand('%:p')))
edit
endfunction
map <F4> :call WriteSmall()<CR>
注:此功能依赖于GNU版本date
,stat
和touch
。