When you are first learning vi, especially if you are an intrepid experimenter, there are two other ex commands that are handy for getting out of any mess that you might create.
returns you to the last saved version of the file, so you can start over.
quits the file you're editing and returns you to the UNIX prompt.
With both of these commands, you lose all edits made in the
buffer since the last time you saved the file.
vi normally won't let you throw away your edits. The
exclamation point added to the
:q command causes
vi to override this prohibition, performing the operation even
though the buffer has been modified.
File exists File
fileexists - use w! [Existing file] File is read only
file to overwrite the existing file, or type
newfile to save the edited version in a new file.
newfile to write out the buffer into a new file.
If you have write permission for the directory, you can use
mv to replace the original version with your copy of it.
If you don't have write permission for the directory,
write out the buffer to a directory in which you do have write
permission (such as your home directory, or /tmp).
:!df to see whether there's any space on another file system.
If there is, choose a directory on that file system and write your
file to it with
df is the UNIX command to check a
disk's free space.)
The system puts you into open mode and tells you that the file system is full.
The disk with vi's temporary files is filled up.
:!ls /tmp to see whether there are any files you can remove to
gain some disk space.
If there are, create a temporary UNIX shell from which you can remove files or issue
other UNIX commands.
You can create a shell by typing
exit to terminate the shell and return to vi. (On
most UNIX systems, when using a job-control shell, you can simply type
to suspend vi and return to the UNIX prompt;
fg to return to
Once you've freed up some space, write your file with
 Your vi may keep its temporary files in /usr/tmp, /var/tmp, or your current directory; you may need to poke around a bit to figure out where exactly you've run out of room.
Try to force the system to save your buffer with the ex command
:pre (short for
If that doesn't work, look for some files to remove.
if you are using a job-control system) to move out of vi and remove
fg) to return to vi when you're done.
Then write your file with
The only way to learn vi is to practice. You now know enough to create a new file and to return to the UNIX prompt. Create a file called practice, insert some text, and then save and quit the file.
|Open a file called practice in the current directory:|
|Return to command mode:||[ESC]|
|Quit vi, saving edits:|