macro vim para converter o CamelCase em lowercase_with_underscores


12

Existe uma macro vim para converter o CamelCase em lowercase_with_underscores e vice-versa?

Respostas:


19

Tim Pope abolish.vimpode 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_BARe uso

  • crc converter para fooBar
  • crm converter para FooBar
  • cr_ou
    crsconverter parafoo_bar
  • cru converter para FOO_BAR
  • cr- converter para foo-bar

solução perfeita
Neil G

Tim Pope é incrível. Tantos ótimos plugins.
Hendrik

6

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

Obrigado! É quase perfeito, exceto no meu vim, não altera a primeira letra do nome CamelCase. Não sei por que.
Neil G.

Muito agradável. Descobri que precisava fazer essa alteração para que a cobra tomasse a direção do camelo:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Jonah

1

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:


1

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 /nameToReplacee 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 @@.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.