我想要一个快速宏来允许我将 qty_on_hand 之类的文本转换为 Qty_On_Hand。没有下划线的单词应该大写,这样描述就会变成描述。源文本中的大小写不一致,因此可能是 QTY_on_Hand -> Qty_On_Hand。
有任何想法吗?
我想要一个快速宏来允许我将 qty_on_hand 之类的文本转换为 Qty_On_Hand。没有下划线的单词应该大写,这样描述就会变成描述。源文本中的大小写不一致,因此可能是 QTY_on_Hand -> Qty_On_Hand。
有任何想法吗?
尝试以下操作:
:let @t="caw\<C-r>=join(map(split(@\", '_', 1), 'toupper(v:val[:0]).tolower(v:val[1:])'), '_')\n\e"
然后,当您@t
在正常模式下键入时,您将按照您的要求替换当前单词。如果您只想盲目替换所有内容,请使用
:%s/\<\w\+\>/\=join(map(split(submatch(0), "_", 1), "toupper(v:val[:0]).tolower(v:val[1:])"), "_")/g
如果你想让 vim 询问你关于每个替换的问题,请添加c
after标志。g
第二种解决方案假定您的源代码中没有非 ASCII 标识符。