Vim替换为unicode字符

use*_*284 3 regex unicode vim

我已经看到了如何在vim中搜索unicode字符的提示:help regexp和\%u,但是我还没弄清楚如何用十六进制定义的unicode字符替换文本.

特殊情况是DefaultKeyBindings.dict需要注释来打印注释中该行中映射的字符.

开始:

blah blah...\U2234  
Run Code Online (Sandbox Code Playgroud)

命令:

:s/\v.*\\U(\d{4})/& \/\*\\\\%u\1 \*\/  
Run Code Online (Sandbox Code Playgroud)

结果:

blah blah...\U2234 /*\%u2234 */  
Run Code Online (Sandbox Code Playgroud)

目标:

blah blah...\U2234 /* ? */
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 8

您需要将十六进制Unicode值的字符串表示形式转换为由其表示的实际字符.这是一项任务nr2char(),可以通过以下方式嵌入到替换中:help sub-replace-expression:

:substitute+\v.*\\U(\d{4})\zs+\='/* '.nr2char(str2nr(submatch(1),16)).' */'+
Run Code Online (Sandbox Code Playgroud)

Protip:使用不同的分隔符(我选择+/),然后你不需要逃避.