En Intellij, ¿cómo puedo alternar entre mayúsculas y minúsculas y guiones bajos espaciados?

109

En mi empresa tenemos dos guías de estilo diferentes para java vs sql. En java tengo un campo nombrado historyOfPresentIllnessy cuando escribo el sql, quiero nombrarlo history_of_present_illness. ¿Existe un método abreviado de teclado para cambiar de uno a otro cuando tengo la frase resaltada? ¿O quizás un complemento que pueda hacer esto?

Mientras que estoy pidiendo, puedo también preguntar si hay una manera de convertir historyOfPresentIllnessa history-of-present-illness. Eso es del estilo java al clojure.

Daniel Kaplan
fuente

Respuestas:

186

Utilizo un complemento llamado String Manipulation que tiene las capacidades que está buscando (y más).

Seleccione historyOfPresentIllnessy presione Alt+ Mpara abrir el menú de complementos, luego presione:

  • 5- A snake_case (o a camelCase) que se convierte enhistory_of_present_illness
  • 6 - A caso de guiones (o a caso_serpiente) que se convierte enhistory-of-present-illness

Para facilitar esto, puede configurar un atajo en File | Settings | Keymap .


Una búsqueda rápida en el repositorio de complementos para "camel" mostró un complemento llamado CamelCase que hace exactamente lo que estás buscando con SHIFT+ ALT+ Ual alternar entre varios formatos:

historyOfPresentIllness-> history_of_present_illness-> HISTORY_OF_PRESENT_ILLNESS-> HistoryOfPresentIllness->historyOfPresentIllness

Sin embargo, después de probarlo, parece haber un error con este complemento que le impide deshacer cualquier cambio. Actualización: parece que este error se ha solucionado por un tiempo, por lo que el complemento CamelCase es probablemente el camino a seguir.

DannyMo
fuente
1
@tieTYT Sí, es bastante molesto porque aparece un mensaje emergente que le dice que el archivo tiene cambios que no se pueden deshacer ... si no fuera por eso, hubiera sido la opción más conveniente.
DannyMo
2
@tieTYT Se me acaba de ocurrir que para simplificar el primer enfoque, puede grabar una macro Edit > Macros > Start recording macroy luego agregar una asignación de teclas simple para su macroSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
String Manipulation ahora también contiene acciones para alternar entre todo tipo de casos ... Puede configurar un acceso directo a cualquier acción (hay demasiados de ellos para tener algunos predeterminados).
Meo
@DannyMo - Para mí, es 5de SCREAMING_SNAKE_CASEy Jes para Trim all spaces. Con Mac OS X 10.10.5, PhpStorm 10.0.1, Manipulación de cadenas 4.1.135.445.1.
Pang
Puedo confirmar que el complemento CamelCase funciona bien con IntelliJ 2016.2.3
Wim Deblauwe
45

Presione muy simple Clr + Fpara abrir el panel Buscar / Reemplazar y verificar [✓] Regex copy pasado regex

Encontrar: [_]{1,1}([a-z])

Reemplazar: \U$1

Presione el botón [Reemplazar todo], disfrute


Gracias a @piotrek _some_awe_vara_someAweVar

Usar Buscar: (\w)[_]{1,1}([a-z])
Reemplazar:$1\U$2

Qamar
fuente
2
En aras de la integridad, desde camelCase hasta snake_case: busque ([A-Z]{1,1})y reemplace por _\l$1, con las opciones de caso Regex y Match activadas.
dic19
Esto es genial, pero en TypeScript, a menudo los miembros privados comienzan con un _y esto los hará comenzar en mayúsculas.
Stack Underflow
1
@StackUnderflow uso Buscar: (\w)[_]{1,1}([a-z]) Reemplazar: $1\U$2
Qamar
7

De snake_case a CamelCase

  • Encontrar: (\w)[_]{1,1}([a-z])
  • Reemplazar: $1\U$2
  • Configuraciones:
    • Match Case
    • Regex

De CamelCase a snake_case:

  • Encontrar: ([A-Z])
  • Reemplazar: \_\L$1
  • Configuraciones:
    • Match Case
    • Regex
Theodore R. Smith
fuente
3

La respuesta anterior es casi perfecta, pero tenga en cuenta que cambiará variables como _somethingo this._somethingen Somethingy this.Something. No quería eso en mi caso, ya que el _ principal se usaba para denotar variables "privadas" (antiguo proyecto JS). Modifiqué ligeramente este enfoque:

Encontrar: (\ w) [_] {1,1} ([az])

Reemplazar: $ 1 \ U $ 2

Esto asegurará que solo las variables con _está en el medio se verán afectadas.

piotrek
fuente
1
"arriba" no tiene sentido porque las respuestas se pueden ordenar; su "arriba" no es el "arriba" de todos, así que evite usar "arriba" o "abajo" para describir el contenido de este sitio; en su lugar, proporcione el nombre del autor, gracias
Eric Aya
La respuesta "anterior" a la que se hace referencia es @Qamar
Stack
0

Si está de acuerdo con que PyCharm también refactorice los usos, inicie la herramienta "Cambiar nombre" (Refactorizar> Cambiar nombre). La ventana aparece con una lista desplegable y debería ver la versión snake_case del texto en la lista (puede abrir la ventana y cambiar a snake_case con pulsaciones de teclas para que pueda ser bastante rápido).

Rafe
fuente