vim 宏将 CamelCase 转换为 lowercase_with_underscores

vim 宏将 CamelCase 转换为 lowercase_with_underscores

是否有VIM宏可以将骆驼转换为lowercase_with_underscores,反之亦然?

答案1

蒂姆·波普的abolish.vimcamelCase可以在、MixedCase(也称为PascalCasesnake_case、 和之间转换UPPER_CASE,也可以将 (单向) 转换为dash-case

将光标置于fooBarFooBarfoo_bar或上FOO_BAR并使用

  • crc转换为fooBar
  • crm转换为FooBar
  • cr_
    crs转换为foo_bar
  • cru转换为FOO_BAR
  • cr-转换为foo-bar

答案2

就在这里,另外还有一条线路可通往相反方向!

如果它消失的话,请引用维基百科:

" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul

相反方向:

" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl

答案3

左心室收缩还提供了在命名样式之间进行转换的命令:

:NameConvert snake

将会把光标下的单词转换为 snake_case。

:%ConvertNames/\<m_\k\+(/getter/gc

会将模式的每次出现转换为 getter 名称,假设用户确认转换 ( :h :s_flags)

支持的样式有两种:

  • 确切的样式(蛇case,uppercamelcase,lowercamelcase)
  • 语义样式(本地、全局、成员、参数、getter、setter、常量、静态、函数、类型......)调整以适应当前项目命名约定

答案4

我创建了这样的命令:

command! Ctl
    \ exec "norm \"xygn" |
    \ let @y = substitute(@x, "\\([^A-Z]\\)\\([A-Z]\\)", "\\1_\\2", "g") |
    \ let @y = tolower(@y) |
    \ exec "norm cgn\<C-r>y" |
    \ let @@ = ":Ctl\n"

您必须先搜索要替换的字符串/nameToReplace,然后运行:Ctl,下一个搜索匹配项将变为name_to_replace。该命令将自身放入寄存器中,@@因此您可以通过按 重复该操作@@

相关内容