Skip to content

Execute

Usage

execute in conjuction with normal! let's us escape special characters.

:execute "normal! mqA;\<esc>`q"

Breakdown:

  • :execute "normal! ...": run the sequence of commands as if they were entered in normal mode, ignoring all mappings, and replacing string escape sequences with their results.
  • mq: store the current location in mark "q". A: move to the end of the
  • current line and enter insert mode after the last character.
  • ;: we're now in insert mode, so just put a literal semicolon in the file.
  • \<esc>: this is a string escape sequence which resolves to a press of the escape key, which takes us out of insert mode.
  • `q: return to the exact location of mark "q".

Regex in commands

:execute "normal! gg" . '/for .\+ in .\+:' . "\<cr>"

The middle component will be treated as a literal string, so we don't need to escape .\+.

Very Magic

:execute "normal! gg" . '/\vfor .+ in .+:' . "\<cr>"

This tells Vim to use its "very magic" regex parsing mode, which is pretty much the same as you're used to in any other programming language.

Escaping characters

If the cursor is on the word don't:

:echom expand("<cWORD>")
" will output don't
:echom shellescape(expand("<cWORD>"))
" will output 'don'\''t'

More here.