Vim 正则表达式 - 替换中的十六进制字符?
Vim regex - hex character in replacement?
我想对 Vim 中的一系列行进行全局替换:
:s/pattern/replacement/g
'pattern'是一组中的一个字符,例如[BEINS]
而 'replacement' 是单个字符。然而,皱纹是单个字符作为 ASCII/Unicode 中字符的 2 位十六进制表示形式提供给我。显然,我可以查找十六进制 ASCII 图表,例如 5F
是下划线字符,然后我可以在正则表达式的替换部分中键入 _
。
有没有办法在正则表达式的右侧键入十六进制?
我尝试过但不起作用的方法包括:
:%s/[BEINS]/\x5F/g
:%s/[BEINS]/\x5F/g
在我的 Linux 工作站上,我可以键入 Ctrl-Shift-U 后跟一个十六进制代码,然后是 Enter 但我想知道是否有一种 Vim 特定的方法可以将十六进制放入正则表达式的替换部分。
您可以尝试使用 ctrl+v
:%s/[BEINS]/<ctrl>-vx5F/gc
ctrl+v:
上的 vim 帮助页面
With CTRL+V the decimal, octal or hexadecimal value of a character can be
entered directly. This way you can enter any character, except a line break
(, value 10). There are five ways to enter the character value:
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)
您可以使用:
:%s/[BEINS]/\="\x5F"/gc
魔法:
1 - Use the expression register `\=`
2 - use double quotes
我想对 Vim 中的一系列行进行全局替换:
:s/pattern/replacement/g
'pattern'是一组中的一个字符,例如[BEINS]
而 'replacement' 是单个字符。然而,皱纹是单个字符作为 ASCII/Unicode 中字符的 2 位十六进制表示形式提供给我。显然,我可以查找十六进制 ASCII 图表,例如 5F
是下划线字符,然后我可以在正则表达式的替换部分中键入 _
。
有没有办法在正则表达式的右侧键入十六进制?
我尝试过但不起作用的方法包括:
:%s/[BEINS]/\x5F/g
:%s/[BEINS]/\x5F/g
在我的 Linux 工作站上,我可以键入 Ctrl-Shift-U 后跟一个十六进制代码,然后是 Enter 但我想知道是否有一种 Vim 特定的方法可以将十六进制放入正则表达式的替换部分。
您可以尝试使用 ctrl+v
:%s/[BEINS]/<ctrl>-vx5F/gc
ctrl+v:
上的 vim 帮助页面With CTRL+V the decimal, octal or hexadecimal value of a character can be entered directly. This way you can enter any character, except a line break (, value 10). There are five ways to enter the character value:
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)
您可以使用:
:%s/[BEINS]/\="\x5F"/gc
魔法:
1 - Use the expression register `\=`
2 - use double quotes