How to save existing file to a new file (save as) in vi / vim

Is it possible to save existing file directly when using vi or vim text editor? How do I run “save as” command in vi/vim running on a Linux or Unix-like systems?

Vi is a text editor for Linux and Unix-like systems. An updated version of vi shipped with modern Unix system called vim (Vi IMproved) with upwards compatible to Vi. One can use vi to edit any plain text file. However, vim is very useful for editing programs.


Procedure to save existing file to a new file under vi or vim

  1. There is no “Save as” dialog in vim or vi text editor. However, one can run the following command to save existing file.
  2. Choose a filename that does not exist yet. For example, foo.txt
  3. Now press ESC key
  4. Type, :w foo.txt (where foo.txt is the filename you chose to save as in vi or vim)

Let us see all command in details.

vim save as command

Let us start vi/vim and create a new file named bar.txt. Open the terminal application and type the following command:
vim bar.txt
Press i to insert some text:
vim save as file command
To save a file press ESC and :w. The last command will save the current file. Now let us say you want to save “bar.txt” as “foo.txt” using vim. The command syntax is as follows:
:x foo.txt

vim save existing file to a new file
After saving your changes, you can quit Vim with (first press ESC):

How do I save a file in other directory in vim/vi?

You must type the full path to the location where you want to save the file with the write command. For instance, save file in /home/vivek/backups/foo.txt:
:w /home/vivek/backups/foo.txt


Please note that if you are not editing an existing file, you can always provide a file name when you save. You can do this with :w filename. The same command act as “save as” command too.

🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallCentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNCentOS 8 Debian 10 Firewall Ubuntu 20.04


Comments on this entry are closed.

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.