vim macro para converter CamelCase para lowercase_with_underscores

10

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

    
por Neil G 16.04.2011 / 00:06

4 respostas

18

abolish.vim do Tim Pope pode converter entre camelCase , MixedCase , snake_case e UPPER_CASE , além de converter (unidirecional) para dash-case .

Posicione o cursor em qualquer um dos fooBar , FooBar , foo_bar ou FOO_BAR e use

  • crc para converter para fooBar
  • crm para converter para FooBar
  • cr_ ou crs para converter para foo_bar
  • cru para converter para FOO_BAR
  • cr- para converter para foo-bar
por 16.04.2011 / 04:33
6

Sim, existe e, como bônus, há um ali para ir na direção oposta também!

Cite o wiki, caso isso desapareça:

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

e para a direção oposta:

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

O lh-dev também fornece comandos para converter entre estilos de nomenclatura:

:NameConvert snake

irá converter a palavra sob o cursor para snake_case.

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

converterá cada ocorrência do padrão em um nome de getter, assumindo que o usuário confirma a transformação ( :h :s_flags )

Os estilos suportados são de dois tipos:

por 21.07.2015 / 12:32
1

Eu criei um comando assim:

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"

Primeiro, você deve procurar uma string que queira substituir /nameToReplace e, em seguida, 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 @@ .

    
por 21.07.2017 / 22:16

Tags