Reorganizar los parámetros del método en IntelliJ con el método abreviado de teclado


92

En IntelliJ puedo reorganizar fácilmente el orden de las declaraciones (o métodos completos para esa parte) presionando + Shift+ (o + Shift+ ).

Me preguntaba si hay un atajo para cambiar el orden de los parámetros del método tan fácilmente, de modo que

public void sth(String a, String b) {...}

se convertirá

public void sth(String b, String a) {...}

con el trazo de un atajo de teclado (asumiendo que mi cursor está posicionado en uno de los parámetros).

Sería suficiente para mí, si IntelliJ simplemente reordenara los parámetros. Es decir, esto no tiene por qué desencadenar todo un Refactor> Cambiar firma de método .


1
¿Cómo debería comportarse esto cuando se tienen tres o más parámetros? :)
Konstantin Yovkov

2
Digamos que mi cursor está en el segundo parámetro: moviéndolo hacia arriba, debería convertirse en el primero. Bajándolo, debería convertirse en el último.
Stefan Haberl

2
¡Un parámetro movido hacia arriba o hacia abajo a la vez! ¡Me encantaría poder hacer esta función!
Per Eriksson

1
Ctrl+F6y luego Alt+Upo Alt+Downmover un parámetro?
Lyubomyr Shaydariv

1
Sí, más a menudo de lo que piensas. Cuando comienzo a desarrollar un método, generalmente Alt-Enter agrego parámetros adicionales cuando es necesario. Cuando termino, reorganizo los parámetros para que estén en un orden más lógico. Además, creo que sería muy bueno tener este atajo también para las llamadas a métodos. (Hombre, ¿con qué frecuencia me equivoqué en el orden cuando trabajaba con API heredadas con más de 4 o 5 parámetros del mismo tipo! ¡Uhg!)
Stefan Haberl

Respuestas:


155

Desde IDEA 16 EAP, hay una acción para eso. Está en el menú:

Código | Mover elemento a la izquierda / derecha

Los atajos de teclado son Alt+ Ctrl+ Shift+ Left/Right( Alt+ Cmd+ Shift+ Left/Rightpara OSX).

Consulte http://blog.jetbrains.com/idea/2016/01/intellij-idea-16-eap-improves-editor-and-vcs-integration/ para obtener más detalles.


Supongo que tendré que esperar un poco más hasta que IDEA 16 se publique en la naturaleza, ¡pero eso es una gran noticia!
Stefan Haberl

El EAP ya está en la naturaleza, puedes probarlo :) No creo que tome más de 2 meses para el lanzamiento.
Peter Gromov

4
Bien, pero la respuesta de Lyubomyr Shaydariv: stackoverflow.com/a/35359882/4024146 es mucho mejor, porque refactoriza y cambia las dependencias de los cambios de parámetros. Esto solo cambia los parámetros para este método, pero no las llamadas a métodos de otros métodos. No necesita hacer una macro para ello, solo CTRL + F6 y use ALT + ↓
mtrakal

1
@mtrakal son dos cosas diferentes. Cuando estoy componiendo un método, no necesito la refactorización pesada (lenta), solo quiero mover parámetros fácilmente. El verdadero problema con este es que a menudo tengo parámetros en líneas separadas, por lo que esto no funciona. (Realmente quiero un movimiento anterior y siguiente, no izquierda y derecha.)
James Moore

Si tiene varios cursores en varios parámetros de diferentes métodos, se pueden mover juntos.
WesternGun

16

No estoy seguro de si es posible en IDEA, pero puede intentar usar macros de editor para métodos de dos parámetros:

  • Editor -> Macros -> Iniciar grabación de macros
  • Grabe su macro:
    • Ctrl+ F6para abrir el cuadro de diálogo Cambiar firma
    • Alt+ para intercambiar el primer y segundo parámetro
    • Tabpara desactivar la pestaña Parámetros y dejar que el botón Refactor obtenga el foco
    • Enter para cerrar el diálogo al realizar la refactorización
  • Editor -> Macros -> Detener grabación de macros y darle un nombre a su macro, digamos "Intercambiar parámetros de método 1 y 2".

Y luego acceda a su macro a través del Editor -> menú Macros o asígnele un acceso directo personalizado en Configuración -> Mapa de teclas -> Menú principal / Editar / Macros / Intercambiar parámetros de método 1 y 2 . A mí me parece una forma muy sucia y sin contexto, pero tal vez podría ayudarte un poco.


11

En Ubuntu 18.04, el atajo predeterminado es Ctrl + Alt + Shift + Super + Izquierda / Derecha para mover un argumento hacia la izquierda o hacia la derecha en su posición.

Esto es porque está configurado para no chocar con algunos de los nuevos accesos directos de nivel de sistema operativo


1
gracias, aunque requiere gimnasia con los dedos, esto es mucho mejor que tener que atar una tecla separada.
gMale
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.