Vim如何用单条命令实现JSON值的下划线转空格与首字母大写格式化
Vim 单命令批量格式化JSON大写value方案
需求说明
保留JSON键名不变,将冒号后下划线分隔的全大写value转换为空格分隔、每个单词仅首字母大写其余小写的标题格式:
原格式示例:
"ASDF": "TUOJKLDSF", "ASDF": "TUOJKLDSF_FUGZIHOJKOWG", "ASDF": "TUOJKLDSF_FUGZIHOJKOWG_IKEH", "ASDF": "TUOJKLDSF_FUGZIHOJKOWG_IKEH_SDF",目标格式示例:
"ASDF": "Tuojkldsf", "ASDF": "Tuojkldsf Fugzihojkowg", "ASDF": "Tuojkldsf Fugzihojkowg Ikeh", "ASDF": "Tuojkldsf Fugzihojkowg Ikeh Sdf",
解决方案
直接执行以下单条Vim全局替换命令即可完成全量处理:
:%s/: "\zs[A-Z_]\+\ze"/\=substitute(substitute(tolower(submatch(0)), '_', ' ', 'g'), '\v<(.)', '\U\1', 'g')/g
命令逻辑说明
- 匹配阶段:用
\zs和\ze锚定操作范围,仅匹配:"和闭合双引号之间的全大写+下划线内容,完全不会修改前面的JSON键名 - 替换阶段使用Vim表达式替换功能
\=处理匹配到的value:- 先把整个value转换为全小写,同时将下划线替换为空格
- 匹配每个单词的首字母转换为大写,自动完成标题格式转换
该命令支持任意数量下划线分隔的value,不需要按单词数量编写多条替换规则。
内容的提问来源于stack exchange,提问作者jeffrey.d.m
相关产品推荐
相关产品推荐

