0

假设我正在 vim 中编辑一个文件,然后保存 ( 1 )。我继续编辑,然后再次保存(2)。是否可以“删除”最后一次保存——这意味着 vim 会将文件保留在当前状态,但认为最后一次保存是1

为了澄清,我打开一个文件并写

one
two

我保存它。然后我继续编辑它,所以现在

one
two
three
four

现在我需要把它保存在这个状态,然后做一些事情(这就是我想知道的),这会让 vim 仍然显示给我

one
two
three
four

但是如果我关闭文件(或用 恢复它:e!,它将处于

one
two

我想这样做是因为我使用处理,并且将它与外部编辑器一起使用它依赖于作用于文件的外部程序,这意味着它需要被保存,因此程序可以根据文件的所需状态进行操作. 但是,有时我有一个保存的文件,并且想进行一些更改以测试结果。但是,如果我不喜欢这个结果,我会“卡住”这个新保存的版本(除非我确切地记得我需要撤消多少次才能获得以前的保存状态),我正在寻找一个将其链接到保存文件并针对它运行程序的命令的方法。

4

4 回答 4

2

这是取自您的原始编辑。

我有一个 vim 操作,需要先保存文件,然后再对其进行操作,但我仍然希望保持实验可能性处于打开状态(因此,如果我不喜欢这些更改,我可以执行 :e! 或关闭文件。可能吗?

您正在寻找的是所谓的版本控制。版本控制允许您对文件进行更改、保存和撤消这些更改。看看gitsvn

这是您可以使用 git 做什么的示例。

假设您有一个包含内容的文件

one
two

然后您可以将您的文件签入到版本控制软件中。(用 git 你做git commit

然后稍后您将文件修改为

one
two
three
four

此时,您可以执行 agit diff并查看自上次提交以来您对文件所做的所有更改。

如果您喜欢这些更改,您可以提交它们。如果您不喜欢所做的更改,您可以执行 agit checkout <file>并将文件恢复到其旧状态

one
two
于 2013-06-30T02:59:07.750 回答
1

这是一种基于 minitech 答案的方法。请注意,我没有对此进行广泛测试。

  1. 进行原始编辑,然后保存。
  2. 进行下一次编辑,然后保存。
  3. 用于:ea 1f在上次保存时恢复到缓冲区的状态(请参阅 参考资料:h :earlier)。
  4. 再次保存。
  5. 用于:lat 1f在第 2 步之后返回缓冲区(请参阅 参考资料:h :later)。
  6. 使用:set nomodified这样 Vim 不会认为缓冲区被修改,因此需要再次保存。

由于您在步骤 3 和 4 中执行的操作,磁盘上的文件在步骤 1 之后仍然看起来像。

我也建议您改用版本控制。逃犯插件是在 Vim 中使用 Git的一种非常好的方式,不会妨碍您。

于 2013-07-01T19:54:33.623 回答
0

你的两个描述似乎相互冲突,所以我会回答第二个:)

要将当前文件标记为未修改,它是:

:set modified!
于 2013-06-30T02:02:54.987 回答
0

听起来您只想:

  1. 撤消更改
  2. 保存文件
  3. 重做更改

    :undo | w | redo<CR>

于 2013-06-30T15:30:33.167 回答