1

我想要一个快速宏来允许我将 qty_on_hand 之类的文本转换为 Qty_On_Hand。没有下划线的单词应该大写,这样描述就会变成描述。源文本中的大小写不一致,因此可能是 QTY_on_Hand -> Qty_On_Hand。

有任何想法吗?

4

1 回答 1

0

尝试以下操作:

: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 询问你关于每个替换的问题,请添加cafter标志。g

第二种解决方案假定您的源代码中没有非 ASCII 标识符。

于 2011-04-04T15:32:55.510 回答