vim:如何搜索/替换特殊字符?

时间:2011-12-09 15:14:39

标签: vim replace

从维基百科复制粘贴到vim之后,我明白了:

  1 A
  2 
  3 [+] Métier agricole<200e> – 44 P • 2 C
  4 [×] Métier de l'ameublement<200e> – 10 P
  5 [×] Métier de l'animation<200e> – 5 P
  6 [+] Métier en rapport avec l'art<200e> – 11 P • 4 C
  7 [×] Métier en rapport avec l'automobile<200e> – 10 P
  8 [×] Métier de l'aéronautique<200e> – 15 P

问题是 <200e> 只是一个字符。

我想知道如何将其置于搜索/替换中(通过 / : )。

3 个答案:

答案 0 :(得分:28)

查看\%u的帮助:

                                /\%d /\%x /\%o /\%u /\%U E678

\%d123  Matches the character specified with a decimal number.  Must be
        followed by a non-digit.
\%o40   Matches the character specified with an octal number up to 0377.
        Numbers below 040 must be followed by a non-octal digit or a non-digit.
\%x2a   Matches the character specified with up to two hexadecimal characters.
\%u20AC Matches the character specified with up to four hexadecimal
        characters.
\%U1234abcd     Matches the character specified with up to eight hexadecimal
        characters.

这些是您可以使用的序列。看起来你有两个字节,所以\%u200e 应该匹配它。无论如何,这很奇怪。 20以UTF-8 / ASCII为空格 字符,0e是^ N.检查您的编码设置。

答案 1 :(得分:4)

如果你想在任何地方快速选择这个多余的角色并替换它/摆脱它,你可以:

  1. 通过在它之前和之后添加空格来隔离其中一个奇怪的字符,因此它变成了“单词”
  2. 使用 * 命令搜索光标下的单词。如果您已启用set hlsearch,则应该会看到突出显示的无关字符的所有出现。
  3. 全局替换上次搜索到的其他内容: :%s//something else/

答案 2 :(得分:1)

  1. 替换^@

    :%s/\%x00//g

  2. 替换^L

    //使用ctrl-V ctrl-L输入^ L

    :%s/^L//g

引用: