有时候我想在覆盖原始文件之前测试对文件的更改。
有什么办法可以将正在编辑的文件保存为新文件?

评论

脱离主题的答案是建议使用VCS。例如git的索引可能有用

#1 楼

您可以为:w:write命令提供参数以保存到其他文件。
例如将当前缓冲区保存到/tmp/data.txt

:w /tmp/data.txt


但是,请记住,这不会将缓冲区切换到其他文件。
因此,如果您继续编辑并仅执行:w,则会保存到当前文件,而不是另一个文件。要切换到另一个文件,请使用:edit命令:

:e /tmp/data.txt


要执行此步骤,请保存到另一个文件并使用:saveas命令切换到该文件:

:sav /tmp/data.txt


评论


最好记住,如果在运行e:/tmp/data.txt之前对当前缓冲区进行任何更改而不将其保存/写入到当前文件中,vim会抱怨。

–尼古拉斯·库萨尔(Nicholas Cousar)
20年8月29日在17:21

但是,我想:sav会覆盖将更改写入原始文件的过程,因此它实际上结合了:w和:e!。

–尼古拉斯·库萨尔(Nicholas Cousar)
20年8月29日在17:29

#2 楼

Vim具有可以通过:set backup:set patchmode启用的“备份模式”。在这种模式下,Vim自动保留所写文件的备份副本。例如,如果发出:set patchmode=.orig,并编辑现有文件somefile.txt,那么当正常发出:w时,Vim会保留旧文件的副本为somefile.txt.orig,并将新内容另存为somefile.txt

#3 楼

是的,有办法。
:w new_file_name

#4 楼

只需在:w命令中指定一个新文件路径-:w newfile.foo