camelCase以vi(m)为下划线

时间:2011-03-03 19:03:54

标签: regex vim replace case-conversion

如果出于某种原因我想有选择地将camelCase命名的东西转换成vim中的下划线,我怎么能这样做呢?

目前我发现我可以进行搜索/s[a-z][A-Z]并记录一个宏来添加下划线并转换为小写,但我很好奇是否可以使用以下内容来执行此操作: / p>

%s/([a-z])([A-Z])/\1\u\2/gc

提前致谢!

编辑:我找到了camelCase的答案(这是我真正需要的),但其他人可以回答如何将CamelCase更改为camel_case吗?

6 个答案:

答案 0 :(得分:38)

你可能想试试Tim Pope的Abolish插件。它提供了一些从强制从一种风格到另一种风格的快捷方式。例如,从:

开始
MixedCase

键入crc [助记符:CoeRce到Camelcase]会给你:

mixedCase

键入crs [助记符:CoeRce to Snake_case]会给你:

mixed_case

输入crm [助记符:CoeRce到MixedCase]会带你回到:

MixedCase

如果您还安装了repeat.vim,则可以通过按住点键重复强制命令。

答案 1 :(得分:19)

这有点长,但似乎做了这个工作:

:%s/\<\u\|\l\u/\= join(split(tolower(submatch(0)), '\zs'), '_')/gc

答案 2 :(得分:10)

我想我应该继续尝试大约5分钟。好吧......如果有人好奇的话:

%s/\(\l\)\(\u\)/\1\_\l\2/gc可以解决问题。

实际上,我意识到这适用于camelCase,但不适用于CamelCase,它也可能对某人有用。

答案 3 :(得分:5)

我掀起了一个执行此操作的插件。 https://github.com/chiedojohn/vim-case-convert

要转换大小写,请在可视模式下选择一个文本块,然后输入以下内容之一(自解释):

:CamelToHyphen :CamelToSnake :HyphenToCamel :HyphenToSnake :SnakeToCamel :SnakeToHyphen

要转换文档中的所有视觉,请运行以下命令之一:

:CamelToHyphenAll :CamelToSnakeAll :HyphenToCamelAll :HyphenToSnakeAll :SnakeToCamelAll :SnakeToHyphen

在上述任何命令中添加一个爆炸(例如:CamelToHyphen!)以在每次转换之前绕过提示。 您可能不想这样做,因为插件不会知道文件中的变量或其他文本之间的差异。

答案 4 :(得分:1)

对于CamelCase案例:

%s#(\<\u\|\l)(\l+)(\u)#\l\1\2_\l\3#gc

提示:正如我的示例所示,可以更改正则表达式分隔符,使其(有些)更清晰。

答案 5 :(得分:0)

我有一个用于各种面向开发的处理的API。除此之外,它提供了一些用于在(可配置的)约定之间转换名称的函数(变量&lt; - &gt;属性&lt; - &gt; getter&lt; - &gt; setter&lt; - &gt; constant&lt; - &gt;参数&lt ; - &gt; ...)和样式(camelcase(低/高)&lt; - &gt;下划线)。这些转换函数已包装到插件中。

可以从此处获取插件+ API:https://github.com/LucHermitte/lh-dev,对于此名称转换任务,它需要lh-vim-lib

可以使用以下方式:

  • 将光标放在要重命名的符号
  • 输入:NameConvert +您希望的转换类型(此处:underscore)。注意:此命令支持自动完成。
  • etvoilà!