Vim 正则表达式 - 替换十六进制字符?

Gra*_*ean 1 regex vim ascii

我想对 Vim 中的一系列行进行全局替换:

:s/pattern/replacement/g
Run Code Online (Sandbox Code Playgroud)

“模式”是一组中的一个字符,例如[BEINS],“替换”是单个字符。然而,问题在于单个字符是作为 ASCII/Unicode 字符的 2 位十六进制表示形式提供给我的。显然,我可以查找十六进制 ASCII 图表以查看例如5F下划线字符,然后我可以输入_正则表达式的替换部分。

有没有办法在正则表达式的右侧输入十六进制?

我尝试过但不起作用的事情包括:

:%s/[BEINS]/\x5F/g
:%s/[BEINS]/\\x5F/g
Run Code Online (Sandbox Code Playgroud)

在我的Linux工作站就可以输入:Ctrl- Shift-U然后是十六进制代码之后Enter,但我在想,如果有一个Vim特定的方式把十六进制的正则表达式的替换零件。

Anu*_*hne 5

您可以尝试使用ctrl+v

:%s/[BEINS]/<ctrl>-vx5F/gc
Run Code Online (Sandbox Code Playgroud)

这是ctrl+上的 vim 帮助页面v

CTRL+V小数,字符的八进制或十六进制值可以直接输入。这样你就可以输入任何字符,除了换行符 (, value 10)。字符值的输入有五种方式:

first char      mode         max nr of chars   max value
(none)          decimal            3            255
o or O          octal              3            377      (255)
x or X          hexadecimal        2            ff       (255)
u               hexadecimal        4            ffff     (65535)
U               hexadecimal        8            7fffffff (2147483647)
Run Code Online (Sandbox Code Playgroud)