macro vim para convertir CamelCase a minúsculas_con_colectores

12

¿Hay una macro vim para convertir CamelCase a minúsculas_con_colecciones y viceversa?

Neil G
fuente

Respuestas:

19

De Tim Papa abolish.vimpuede convertir entre camelCase, MixedCase, snake_casey UPPER_CASE, así como convertir (unidireccional) a dash-case.

Coloque el cursor sobre cualquiera de fooBar, FooBar, foo_bar, o FOO_BARy el uso

  • crc para convertir a fooBar
  • crm para convertir a FooBar
  • cr_o
    crspara convertir afoo_bar
  • cru para convertir a FOO_BAR
  • cr- para convertir a foo-bar
Chris Johnsen
fuente
solución perfecta
Neil G
Tim Pope es asombroso. Tantos complementos geniales.
Hendrik
6

Sí, sí , y como beneficio adicional, ¡también hay uno para ir en la dirección opuesta!

Cita de la wiki en caso de que desaparezca:

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

y para la dirección opuesta:

" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
Daniel DiPaolo
fuente
¡Gracias! Es casi perfecto, excepto en mi vim, no cambia la primera letra del nombre CamelCase. No estoy seguro de por qué.
Neil G
Muy agradable. Encontré que necesitaba hacer este cambio para la dirección de la serpiente al camello:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Jonah
1

lh-dev también proporciona comandos para convertir entre estilos de nombres:

:NameConvert snake

convertirá la palabra debajo del cursor a snake_case.

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

convertirá cada aparición del patrón en un nombre getter, suponiendo que el usuario confirme la transformación ( :h :s_flags)

Los estilos admitidos son de dos tipos:

Luc Hermitte
fuente
1

Creé un 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"

Primero debe buscar una cadena que desea reemplazar /nameToReplacey luego ejecuta :Ctl, y la próxima coincidencia de búsqueda se convertirá name_to_replace. El comando se coloca en el @@registro para que pueda repetir la acción presionando @@.

Jake
fuente