There are times when I want to test changes to a file before I overwrite the original. Is there any way I can save a file being edited to a new file?
4 Answers
You can give a parameter to the :w
or :write
command to save to a different file.
For example to save the current buffer to /tmp/data.txt
:
:w /tmp/data.txt
However, keep in mind that this does not switch your buffer to that other file.
So if you keep editing and do just :w
, that will save to the current file, not to the other one. To switch to the other file, use the :edit
command:
:e /tmp/data.txt
To do this one step, save to another file and switch to it, use the :saveas
command:
:sav /tmp/data.txt
-
It's also good to keep in mind that vim will complain if you make any changes to the current buffer without saving/writing them to the current file before running
e: /tmp/data.txt
Commented Aug 29, 2020 at 17:21 -
But, I suppose
:sav
overrides writing changes to the original file so it essentially combines:w
and:e!
. Commented Aug 29, 2020 at 17:29
Vim has a "backup mode" that can be enabled by :set backup
or :set patchmode
. In that mode, Vim automatically keeps a backup copy of files that you write.
For example, if you issue :set patchmode=.orig
, and you edit an existing file somefile.txt
, then when you issue :w
normally, Vim will keep a copy of the old file as somefile.txt.orig
and save the new contents as somefile.txt
.