vim宏将CamelCase转换为lowercase_with_underscores


12

是否有一个vim宏将CamelCase转换为lowercase_with_underscores,反之亦然?

Answers:


19

蒂姆教皇abolish.vim之间可以转换camelCaseMixedCasesnake_case,和UPPER_CASE,以及转换(单程)来dash-case

在任何的光标定位fooBarFooBarfoo_bar,或FOO_BAR和使用

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

完美的解决方案
Neil G

蒂姆·波普(Tim Pope)很棒。这么多很棒的插件。
Hendrik

6

是的,有一个,而且还有一个好处,那就是相反的方向!

引述Wiki,以防万一它消失了:

" 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

谢谢!几乎是完美的,除了在我的vim上,它不会更改CamelCase名称的首字母。我不知道为什么。
Neil G

非常好。我确实发现我需要对蛇转向骆驼方向进行此更改:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
约拿(Jonah)2013年

1

lh-dev还提供了在命名样式之间进行转换的命令:

:NameConvert snake

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

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

假设用户确认了转换(:h :s_flags),则会将每次出现的模式都转换为吸气剂名称

支持的样式有两种:

  • 确切样式(snake_case,UpperCamelCase,lowerCamelCase)
  • 可以进行调整以适合当前项目命名约定的语义样式(本地,全局,成员,参数,getter,setter,常量,静态,函数,类型等)。

1

我创建了这样的命令:

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。该命令将自身放入@@寄存器,因此您可以按来重复操作@@

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.