Retrieve lost file using Vi in MySQL

With the vi/m editor used with mysql, crontab, and many others, the work is done in a tmp file, as you see from your messages.

Edit (Big doah!, remove cruft about ls -l /tmp/..., you already did that!)

In the future the solution is to tell vim to w the buffer to a file name of your chosing, i.e.

 w! /home/you/scripts/mysql2.sql

Then close the editor with

 q

Note you may not need the ! after w.

I hope this helps.


Here's what I added to my .vimrc in order to save the current query in case i made a mistake.

nmap <F7> :w! /tmp/query.sql\| wq!<CR>

This will create a map to the F7 key (you can change it of course). So every time you open a file either using edit or \e, you change it use the F7 key.

This will save a backup of your current query to /tmp/query.sql and then save and close the temporary file. This way, if you make a mistake, you just re-open the backup file and try again.

Here's also a link you might like: http://vim.wikia.com/wiki/Open_the_last_edited_file