假设我正在使用vim编辑文件,然后保存( 1 )。我继续编辑,然后再次保存( 2 )。是否可以“删除”最后一次保存 - 这意味着vim会将文件保留为当前状态,但认为最后一次保存是 1 ?
为了澄清,我打开一个文件并写
one
two
我保存它。然后我继续编辑它,所以它现在是
one
two
three
four
现在我需要将它保存在这种状态,然后做某事(这是我想知道的),这将使vim仍然显示我
one
two
three
four
但是,如果我关闭文件(或使用:e!
还原文件,那么它将处于
one
two
我想这样做是因为我使用processing,并且要将它与外部编辑器一起使用,它依赖于在文件上执行的外部程序,这意味着它需要保存,因此程序可以根据文件的所需状态进行操作。但是,有时候,我有一个已保存的文件,并且只想进行一些更改以测试结果。但是,如果我不喜欢这个结果,我会“坚持”这个新的保存版本(除非我记得我需要撤消多少次才能获得之前保存的状态),而且我正在寻找一个将此链接到保存文件并针对它运行程序的命令。
答案 0 :(得分:2)
这是从原始编辑中获取的。
我有一个vim动作需要在执行之前保存文件 它,但我仍然希望保持实验可能性(所以 如果我不喜欢这些变化,我可以这样做:e!或关闭文件。是 有可能吗?
您要找的是version control。版本控制允许您更改文件,保存和撤消这些更改。请查看git或svn。
以下是git可以做的一个例子。
假设您有一个包含内容的文件
one
two
然后您可以将文件签入版本控制软件。 (使用git,你可以git commit
)
稍后您将文件修改为
one
two
three
four
此时您可以执行git diff
并查看自上次提交以来对文件所做的所有更改。
如果您喜欢这些更改,可以提交更改。如果您不喜欢这些更改,可以执行git checkout <file>
并将文件恢复为旧状态
one
two
答案 1 :(得分:1)
这是一种基于minitech的答案的方法。 注意我没有对此进行过广泛的测试。
:ea 1f
在最后一次保存时恢复到缓冲区的状态(请参阅:h :earlier
)。:lat 1f
返回步骤2后面的缓冲区(请参阅:h :later
)。:set nomodified
,因此Vim认为缓冲区未被修改,因此需要再次保存。由于您在步骤3和步骤4中执行的操作,磁盘上的文件仍然会像在步骤1之后一样。
但是我还建议你改用版本控制。 fugitive plugin是在Vim中使用Git的一种非常好的方法,它不会妨碍你。
答案 2 :(得分:0)
你的两个描述似乎相互冲突,所以我会回答第二个:)
要将当前文件标记为未修改,请执行以下操作:
:set modified!
答案 3 :(得分:0)
听起来你只想:
重做更改
:undo | w | redo<CR>