我在 VIM 中编辑的文件中有此列:
16128
16132
16136
16140
# etc...
我想将其转换为此列:
0x3f00
0x3f04
0x3f08
0x3f0c
# etc...
我怎样才能在 VIM 中做到这一点?
最佳答案
使用 printf
(类似于 C 的 sprintf
)和 \=
处理替换的命令:
:%s/\d\+/\=printf("0x%04x", submatch(0))
细节:
:%s/\d\+/
:匹配任何行 ( \d\+
) 上的一个或多个数字 ( :%
) 并替换 ( s
)。 \=
:对于每个匹配项,替换为以下表达式的结果:printf("0x%04x",
: 使用格式 "0x%04x"
生成字符串,对应于文字 0x
后跟四位(或更多)十六进制数字,用零填充。submatch(0)
:完整匹配的结果(即数字)。 有关更多信息,请参阅:
:help printf()
:help submatch()
:help sub-replace-special
:help :s
关于vim - 如何在 VIM 中将十进制数转换为十六进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118333/