I'm using the mysql cli in edit mode (\e).

> Select * from \e

Goes to vim and I finish typing my command.

Select * from test_table;

Only to realize I've forgotten to use the database I need. Is there a way I can preserve this script in edit mode, switch back to the regular mysql mode, run my command, and then come back to edit?

Another example would be: I forget how a column name is spelled and I need to look it up after I've started typing a command in edit mode.


1 Answer 1


Well, sort of.

In vim, save your work to a different file...

:w myfile.sql [enter]

Then exit vim with an artificial error so the mysql client won't bother to re-read the temporary file.

:cq [enter]

Then clear the input buffer in mysql.

\c [enter]

Then do what you've gotta do.

Then re-launch vim

\e [enter]

The editor will have your last command in it. Clear that out and then paste the temporary file back into the buffer.

:r myfile.sql [enter]

Keep editing, then save and exit and your new content will be returned to mysql for execution.

  • It sounds like there is no other way... although I thought I remembered an old colleague doing something without having to use your method. If no one else offers an answer in a couple days, I'll mark yours as the correct answer. Thanks! Sep 1, 2013 at 18:40
  • Sounds good. I checked the source of client/mysql.cc and didn't see anything but if someone else has ideas for alternate approaches, I'll be interested to see them, too. Sep 2, 2013 at 2:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.