Vim 将unicode代码点转换为字符的表达式

Vim 将unicode代码点转换为字符的表达式,vim,unicode,Vim,Unicode,我有一个转义为unicode的文件: blah blah blah \u2192 blah blah blah 我想通过搜索/替换将unicode转义转换为实际字符: :%s/\\u\(\d\{4}\)/\=CodePointToCharacter(submatch(1))/g 虽然我知道如何在插入模式下将代码点转换为字符CTRL-V u 2192→, 我不知道如何在vimL表达式中进行转换 我是否需要编写自定义函数,或者是否有内置或插件可以使用?您可以先使用str2nr将数字从十六进制转换

我有一个转义为unicode的文件:

blah blah blah \u2192 blah blah blah
我想通过搜索/替换将unicode转义转换为实际字符:

:%s/\\u\(\d\{4}\)/\=CodePointToCharacter(submatch(1))/g
虽然我知道如何在插入模式下将代码点转换为字符CTRL-V u 2192→, 我不知道如何在vimL表达式中进行转换

我是否需要编写自定义函数,或者是否有内置或插件可以使用?

您可以先使用str2nr将数字从十六进制转换为十六进制,然后使用nr2char显示字符

稍微扩展一下您的命令:

%s/\\u\(\x\{4}\)/\=nr2char(str2nr(submatch(1),16))/g

你赢了我!请注意,对于十六进制匹配,您需要将\d替换为\x。@IngoKarkat谢谢,您是对的,我没有对:s的第一部分做太多检查。更新。