我想在Vim的一系列行中进行全局替换:
:s/pattern/replacement/g
'pattern'是一组中的一个字符,例如[BEINS]
和'替换'是一个单一字符。但是,皱纹是单个字符作为ASCII / Unicode中字符的2位十六进制表示给我。显然我可以查找一个十六进制ASCII图表来查看例如5F
是下划线字符然后我可以在正则表达式的替换部分中键入_
。
有没有办法在正则表达式的右侧输入十六进制?
我尝试过的不起作用的内容包括:
:%s/[BEINS]/\x5F/g
:%s/[BEINS]/\\x5F/g
在我的Linux工作站上,我可以输入 Ctrl - Shift - U ,然后输入十六进制代码,然后输入 Enter 但我想知道是否有一种特定于Vim的方法将十六进制放在正则表达式的替换部分中。
答案 0 :(得分:4)
您可以尝试使用 ctrl + v
:%s/[BEINS]/<ctrl>-vx5F/gc
这是 ctrl + v 的vim帮助页面:
使用 CTRL + V 字符的十进制,八进制或十六进制值可以是 直接进入。这样您就可以输入除换行符之外的任何字符 (,值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)
答案 1 :(得分:1)
您可以使用:
:%s/[BEINS]/\="\x5F"/gc
魔术:
1 - Use the expression register `\=`
2 - use double quotes