Vim regex to substitute/escape pipe characters

前端 未结 3 1337
栀梦
栀梦 2021-02-19 03:48

Let\'s suppose I have a line:

a|b|c

I\'d like to run a regex to convert it to:

a\\|b\\|c

In most regex engine

相关标签:
3条回答
  • 2021-02-19 03:59

    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
    
    0 讨论(0)
  • 2021-02-19 04:03

    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
    
    0 讨论(0)
  • 2021-02-19 04:08

    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
    
    0 讨论(0)
提交回复
热议问题