Respostas:
Tim Pope abolish.vim
pode converter entre camelCase
, MixedCase
, snake_case
, e UPPER_CASE
, bem como converter (one-way) para dash-case
.
Posicione o cursor em qualquer uma fooBar
, FooBar
, foo_bar
, ou FOO_BAR
e uso
crc
converter para fooBar
crm
converter para FooBar
cr_
ou crs
converter parafoo_bar
cru
converter para FOO_BAR
cr-
converter para foo-bar
Sim, existe e, como bônus, também existe um para ir na direção oposta!
Cite o wiki caso ele desapareça:
" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul
e na direção oposta:
" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
O lh-dev também fornece comandos para converter entre estilos de nomeação:
:NameConvert snake
irá converter a palavra sob o cursor em snake_case.
:%ConvertNames/\<m_\k\+(/getter/gc
converterá cada ocorrência do padrão em um nome getter, assumindo que o usuário confirme a transformação ( :h :s_flags
)
Os estilos suportados são de dois tipos:
Eu criei um comando como este:
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"
Você deve primeiro procurar uma string que deseja substituir /nameToReplace
e depois executar :Ctl
, e a próxima correspondência de pesquisa se tornará name_to_replace
. O comando se coloca no @@
registro para que você possa repetir a ação pressionando @@
.