MySQL Shell is a very easy and efficient tool to use when running queries or administering a MySQL database instance. One of the awesome features about MySQL Shell (mysqlsh) is the ability to open your editor to construct a command. You can do this with either \e or \edit. Personally I’m a big fan and daily user of Vim, and I wanted to make this the best experience possible.
First, I wanted to be able to format my SQL in a nice way. I installed pgFormatter:
1
$ sudo apt install -y pgformatter
And then I configured Vim to run pg_format on SQL files in my ~/.vimrc:
1
au FileType sql setl formatprg=/usr/bin/pg_format\ -
This is great! So in Vim if I was to type gqG it would format my SQL buffer with pg_format. But, MySQL Shell opens up a temp file with the format of /tmp/mysqlsh.edit.tmp. If there are multiple edit files open, it’ll append an integer onto that (e.g. /tmp/mysqlsh.edit.tmp550372692). So I need to tell Vim that the filetype for these should be sql in my ~/.vimrc:
1
au BufNewFile,BufRead mysqlsh.edit.tmp* set filetype=sql
Now when I’m using a MySQL Shell instance and run \e, it would look like this unformatted:

And then in Vim if I type gggqG it will automatically format for me:

This is a really great experience when working with MySQL with Vim!