如何使用Vim字符类搜索Unicode字符并调换文本位置
Vim中实现Unicode中文与英文行内容的调换
针对将中文(Unicode汉字)在前、英文在后的行内容调换顺序的需求,可使用Vim支持Unicode字符类的正则替换命令实现:
替换命令
:%s/\(\p{Han}\+\)\s\+\(\w\+\)/\2 \1/g
命令解释
\(\p{Han}\+\):捕获连续的Unicode汉字字符,\p{Han}是Vim专门用于匹配汉字的Unicode字符类,\+表示匹配至少一个汉字\s\+:匹配中文与英文之间的一个或多个空白字符(包括空格、制表符)\(\w\+\):捕获连续的英文单词字符(字母、数字、下划线,适配原场景的英文内容)\2 \1:将捕获的第二组(英文内容)和第一组(中文内容)调换位置,中间保留两个空格(可根据实际需求调整空格数量)
效果验证
原输入:
数据 Data 子树 subtree
执行命令后得到期望输出:
Data 数据 subtree 子树
如果需要适配更广泛的Unicode东亚字符(如日文假名、韩文),可将\p{Han}替换为\p{East_Asian},命令调整为:
:%s/\(\p{East_Asian}\+\)\s\+\(\w\+\)/\2 \1/g
内容的提问来源于stack exchange,提问作者ITW
相关产品推荐
相关产品推荐

