是否有VIM宏可以将骆驼转换为lowercase_with_underscores,反之亦然?
答案1
蒂姆·波普的abolish.vim
camelCase
可以在、MixedCase
(也称为PascalCase
)snake_case
、 和之间转换UPPER_CASE
,也可以将 (单向) 转换为dash-case
。
将光标置于fooBar
、FooBar
、foo_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
。该命令将自身放入寄存器中,@@
因此您可以通过按 重复该操作@@
。