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

ram*_*ion 2 unicode vim

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

blah blah blah \u2192 blah blah blah
Run Code Online (Sandbox Code Playgroud)

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

:%s/\\u\(\d\{4}\)/\=CodePointToCharacter(submatch(1))/g
Run Code Online (Sandbox Code Playgroud)

虽然我知道如何在插入模式下将代码点转换为字符(CTRL-V u 2192对于→),但我不知道如何在 vimL 表达式中进行转换。

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

Ken*_*ent 5

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

稍微扩展你的命令:

%s/\\u\(\x\{4}\)/\=nr2char(str2nr(submatch(1),16))/g
Run Code Online (Sandbox Code Playgroud)