Vim regex to substitute/escape pipe characters

If you use very-magic (use \v) you'll have the Perl/pcre behaviour on most special characters (excl. the vim specifics):

:s#\v\|#\\|#g

vim has its own regex syntax. There is a comparison with PCRE in vim help doc (see :help perl-patterns).

except for that, vim has no magic/magic/very magic mode. :h magic to check the table.

by default, vim has magic mode. if you want to make the :s command in your question work, just active the very magic:

:s/\v\|/\\|/g

Vim does the opposite of PCRE in this regard: | is a literal pipe character, with \| serving as the alternation operator. I couldn't find an appropriate escape sequence because the pipe character does not need to be escaped.

The following command works for the line in my example:

:. s%|%\\|%g

Tags:

Vim

Regex