如果由于某种原因我想有选择地将camelCase命名的东西转换为vim中的下划线分隔,我该怎么做呢?
目前我发现我可以进行搜索/s[a-z][A-Z]
并记录一个宏来添加下划线并转换为小写,但我很好奇我是否可以这样做:
%s/([a-z])([A-Z])/\1\u\2/gc
提前致谢!
编辑:我找到了 camelCase 的答案(这是我真正需要的),但是其他人可以回答如何将 CamelCase 更改为 camel_case 吗?
如果由于某种原因我想有选择地将camelCase命名的东西转换为vim中的下划线分隔,我该怎么做呢?
目前我发现我可以进行搜索/s[a-z][A-Z]
并记录一个宏来添加下划线并转换为小写,但我很好奇我是否可以这样做:
%s/([a-z])([A-Z])/\1\u\2/gc
提前致谢!
编辑:我找到了 camelCase 的答案(这是我真正需要的),但是其他人可以回答如何将 CamelCase 更改为 camel_case 吗?
你可能想试试 Tim Pope 的Abolish插件。它提供了一些从一种风格强制转换为另一种风格的捷径。例如,从以下开始:
MixedCase
输入crc
[mnemonic: CoeRce to Camelcase] 会给你:
mixedCase
输入crs
[mnemonic: CoeRce to Snake_case] 会给你:
mixed_case
键入crm
[mnemonic: CoeRce to MixedCase] 将带您回到:
MixedCase
如果您还安装了 repeat.vim,那么您可以通过按点键重复强制命令。
这有点长,但似乎可以完成这项工作:
:%s/\<\u\|\l\u/\= join(split(tolower(submatch(0)), '\zs'), '_')/gc
我想我应该继续尝试大约 5 分钟。好吧......如果有人好奇:
%s/\(\l\)\(\u\)/\1\_\l\2/gc
成功了。
实际上,我意识到这适用于 camelCase,但不适用于 CamelCase,它也可能对某人有用。
我掀起了一个插件来做到这一点。 https://github.com/chiedojohn/vim-case-convert
要转换大小写,请在可视模式下选择一个文本块,然后输入以下内容之一(自我解释):
:CamelToHyphen
:CamelToSnake
:HyphenToCamel
:HyphenToSnake
:SnakeToCamel
:SnakeToHyphen
要转换文档中的所有 occerences,请运行以下命令之一:
:CamelToHyphenAll
:CamelToSnakeAll
:HyphenToCamelAll
:HyphenToSnakeAll
:SnakeToCamelAll
:SnakeToHyphen
在上述任何命令中添加一个 bang(例如:CamelToHyphen!)以在每次转换之前绕过提示。您可能不想这样做,因为插件不知道文件中变量或其他文本之间的区别。
对于 CamelCase 案例:
%s#(\<\u\|\l)(\l+)(\u)#\l\1\2_\l\3#gc
提示:可以像我的示例中那样更改正则表达式分隔符,以使其(在某种程度上)更清晰。
我有一个用于各种面向开发的处理的 API。除此之外,它还提供了一些函数用于在(可配置的)约定(变量 <-> 属性 <-> getter <-> setter <-> 常量 <-> 参数 <-> ...)和样式(camelcase (低/高)<-> 下划线)。这些转换功能已被包装到一个插件中。
插件+API可以从这里获取:https ://github.com/LucHermitte/lh-dev ,对于这个名称转换任务,它需要lh-vim-lib
它可以通过以下方式使用:
:NameConvert
+ 您希望的转换类型(此处为 : underscore
)。注意:此命令支持自动完成。