hassek

Remember

My code snippets

When you want to do some format changes in vim via the norm! command, instead of doing them in 2 different commands, you can actually exit insert mode inside norm! by doing Ctrl-V and then <ESC>.

Let’s say I want to get all these emails into a list so I can do a query with them

pewpew.lazor@gmail.com
null.personality@outlook.com
your.grandpa@aol.com
angry.at.life@hotmail.com

The general format is :[range]g/<pattern>/<cmd>. By default the range is the whole file.

We can execute this command :g/^/norm!I"\?A", to get what we want; let’s break it down:

:g This specifies that we want to execute a command.

/^/ Match all lines (since all lines do have a beginning of line).

norm! Means we will execute a normal! Command, which means vim will run things you would do to edit a file and execute them on matched lines.

I"\?A", I means go to the beginning of the line in insert mode and insert the " character, then comes the Ctrl-V + <ESC> that looks like \? to exit insert mode, A goes to the end of the line and enters insert mode and finally add ", characters.

Now the file would be like this:

"pewpew.lazor@gmail.com",
"null.personality@outlook.com",
"your.grandpa@aol.com",
"angry.at.life@hotmail.com",

To finish, just run J on all lines and add the brackets at the beginning and end of the line and you are ready to do that query!

("pewpew.lazor@gmail.com", "null.personality@outlook.com", "your.grandpa@aol.com", "angry.at.life@hotmail.com",)