Vim宏到Camel_Case_With_Underscores

时间:2011-04-04 14:15:24

标签: vim vim-macros

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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向您询问每次替换,请在c标记后添加g

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