我有一个已转义 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 表达式中进行转换。
我是否需要编写自定义函数,或者是否有可以使用的内置函数或插件?
您可以先使用str2nr()从十六进制转换数字,然后使用nr2char显示字符。
稍微扩展你的命令:
%s/\\u\(\x\{4}\)/\=nr2char(str2nr(submatch(1),16))/g
Run Code Online (Sandbox Code Playgroud)