vim camelCase在vi(m)中下划线

u4vypkhs  于 2023-06-06  发布在  其他
关注(0)|答案(7)|浏览(426)

如果出于某种原因,我想有选择地将camelCase命名的东西转换为在vim中以下划线分隔,我该怎么做呢?
目前,我发现我可以搜索/s[a-z][A-Z]并记录一个宏来添加下划线并转换为小写,但我很好奇我是否可以这样做:
%s/([a-z])([A-Z])/\1\u\2/gc
先谢谢你了!

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

u4dcyp6a

u4dcyp6a1#

你可能想试试Tim Pope的Abolish插件。它提供了一些快捷方式来从一种风格转换到另一种风格。例如,以以下内容开始:

MixedCase

键入crc [助记符:CoeRce to Camelcase]将为您提供:

mixedCase

键入crs [助记符:CoeRce to Snake_case]将为您提供:

mixed_case

然后输入crm [助记符:CoeRce to MixedCase]将带您回到:

MixedCase

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

jucafojl

jucafojl2#

这是一个有点长,但似乎做的工作:
:%s/\<\u\|\l\u/\= join(split(tolower(submatch(0)), '\zs'), '_')/gc

k3fezbri

k3fezbri3#

我想我应该再多试5分钟。如果有人好奇:
%s/\(\l\)\(\u\)/\1\_\l\2/gc就可以了。
实际上,我意识到这对CamelCase有效,但对CamelCase不有效,后者对某人也可能有用。

qvtsj1bj

qvtsj1bj4#

我做了一个插件来做这件事。https://github.com/chiedojohn/vim-case-convert
要转换大小写,请在可视模式下选择一个文本块,然后输入以下内容之一(自解释):
:CamelToHyphen :CamelToSnake :HyphenToCamel :HyphenToSnake :SnakeToCamel :SnakeToHyphen
要转换文档中的所有事件,请运行以下命令之一:
:CamelToHyphenAll :CamelToSnakeAll :HyphenToCamelAll :HyphenToSnakeAll :SnakeToCamelAll :SnakeToHyphen
添加一个bang(例如:CamelToHyphen!)到上述任何一个命令,以在每次转换之前绕过提示。你可能不想这样做,因为插件不知道变量或文件中其他文本之间的区别。

vjrehmav

vjrehmav5#

对于CamelCase案例:

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

提示:正则表达式的分隔符可以像我的例子中那样修改,使其(在某种程度上)更清晰。

pnwntuvh

pnwntuvh6#

我有一个API用于各种面向开发的处理。除此之外,它还提供了一些函数,用于在(可配置)约定(变量属性、getter、setter<-><-><->、<->常量<->参数<->...)和样式(驼峰(低/高)<->下划线)之间转换名称。这些转换函数已经被封装到一个插件中。
plugin + API可以从这里获取:https://github.com/LucHermitte/lh-dev,对于此名称转换任务,它需要lh-vim-lib
它可以通过以下方式使用:

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

idv4meu87#

对于camelCase

%s/\v<([a-z_]+)([A-Z][a-zA-Z]+)>/\1_\l\2/gc

您可能需要多次运行此命令。

相关问题