【问题标题】:Retain undo history if file is edited outside of Vim如果文件在 Vim 之外编辑,保留撤销历史
【发布时间】:2013-06-07 03:42:36
【问题描述】:

在编辑器之外编辑文件时,Vim 撤消文件被清除。

我怎样才能得到它,以便我可以将文件恢复到旧版本,即使它是在 Vim 之外编辑的?这可能吗?

【问题讨论】:

  • 如果你看一下:h persistent-undo,你会发现撤消文件是加密的。我猜如果文件被外部更改,vim 无法撤消该加密。
  • 这太棒了,几乎到了矫枉过正的地步。

标签: vim


【解决方案1】:

你可以使用 vim 备份:

set backup                   " enable backup file
set backupdir=~/.vim/backups " backup directory

然后你可以去获取上次保存的备份vim,以防你想在外部编辑后恢复,但这不像撤消文件。 From vim wiki:

但是,请注意,如果在没有 Vim 的情况下从外部修改文件,当您再次开始编辑文件时,Vim 将无法读取撤消历史记录,并且撤消树信息将丢失。没有办法找回它。

【讨论】:

  • 这是因为撤消文件是一种“增量差异”风格的格式/编码吗?我正在执行此操作的脚本实际上确实进行了备份,所以我很好,我只是很恼火,我无法 u 它恢复到以前的状态。
【解决方案2】:

如果您指的是由字母 u 调用的撤消,在我的系统上我看不到 undofile(@%) 返回的文件,即使我看到了我也不认为我可以删除它.它不会影响我使用u 键的能力。

如果您的意思是其他人/程序修改了您当前在 vim 中打开的文件,您应该收到文件已更改的通知。选项为OKLoad File。如果按OK,可以按u键,强行写入:w!。这将清除其他人/程序的更改。

如果这些答案都不适用于您,请更详细地解释。

【讨论】:

  • 我有这个脚本,它使用sed 对文件进行修改(注释掉其中的所有行),然后用 vim 将它呈现给我进行编辑。如果我使用错误的参数运行我的脚本,它会进行此修改并清除撤消文件的历史记录。
猜你喜欢
  • 2013-07-05
  • 2017-06-20
  • 2023-03-14
  • 2016-07-22
  • 2015-04-09
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多