Ordnen Sie die Methodenparameter in IntelliJ mit der Tastenkombination neu an

90

In IntelliJ kann ich die Reihenfolge der Anweisungen (oder ganze Methoden für diesen Teil) einfach durch Drücken von + Shift+ (oder + Shift+ ) ändern .

Ich habe mich gefragt, ob es eine Verknüpfung gibt, mit der die Reihenfolge der Methodenparameter so einfach geändert werden kann

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

wird werden

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

mit dem Strich einer Tastenkombination (vorausgesetzt, mein Cursor befindet sich auf einem der Parameter).

Es würde für mich ausreichen, wenn IntelliJ nur die Parameter neu anordnen würde. Das heißt, dies muss nicht eine ganze Sache mit der Signatur "Refactor> Change method" auslösen .

Stefan Haberl
quelle
1
Wie soll sich das verhalten, wenn drei oder mehr Parameter vorhanden sind? :)
Konstantin Yovkov
2
Angenommen, mein Cursor befindet sich auf dem zweiten Parameter: Wenn Sie ihn nach oben verschieben, sollte er der erste sein. Wenn Sie es nach unten schieben, sollte es das letzte sein.
Stefan Haberl
2
Es wurde jeweils ein Parameter nach oben oder unten verschoben! Ich würde gerne in der Lage sein, diese Leistung zu erbringen!
Per Eriksson
1
Ctrl+F6und dann Alt+Upoder Alt+Downum einen Parameter zu verschieben?
Lyubomyr Shaydariv
1
Ja, öfter als du denkst. Wenn ich anfange, eine Methode auszuarbeiten Alt-Enter , füge ich normalerweise bei Bedarf zusätzliche Parameter hinzu. Wenn ich fertig bin, ordne ich die Parameter in einer logischeren Reihenfolge neu an. Außerdem finde ich es sehr schön, diese Verknüpfung auch für Methodenaufrufe zu haben. (Mann, wie oft habe ich die Reihenfolge falsch verstanden, als ich mit älteren APIs mit mehr als 4 oder 5 Parametern des gleichen Typs gearbeitet habe! Uhg!)
Stefan Haberl

Antworten:

152

Seit IDEA 16 EAP gibt es dafür eine Aktion. Es ist im Menü:

Code | Element nach links / rechts bewegen

Tastaturkürzel sind Alt+ Ctrl+ Shift+ Left/Right( Alt+ Cmd+ Shift+ Left/Rightfür OSX).

Weitere Informationen finden Sie unter http://blog.jetbrains.com/idea/2016/01/intellij-idea-16-eap-improves-editor-and-vcs-integration/ .

Peter Gromov
quelle
Ich denke, ich muss etwas länger warten, bis IDEA 16 in die Wildnis kommt, aber das sind großartige Neuigkeiten!
Stefan Haberl
Das EAP ist bereits in der Wildnis, Sie können es versuchen :) Ich glaube nicht, dass es mehr als 2 Monate bis zur Veröffentlichung dauern wird.
Peter Gromov
4
Gut, aber Lyubomyr Shaydariv antwortet: stackoverflow.com/a/35359882/4024146 ist viel besser, weil es eine Abhängigkeit von Änderungen von Parametern umgestaltet und ändert. Dies wechselt nur die Parameter für diese Methode, nicht jedoch Methodenaufrufe von anderen Methoden. Sie müssen kein Makro dafür erstellen, nur STRG + F6 und ALT + ↓
mtrakal
1
@mtrakal das sind zwei verschiedene Dinge. Wenn ich eine Methode komponiere, brauche ich kein schweres (langsames) Refactoring - ich möchte nur einfach Parameter verschieben. Das eigentliche Problem bei diesem ist, dass ich oft Parameter in separaten Zeilen habe, so dass dies nicht funktioniert. (Ich möchte wirklich eine Bewegung - vorher und nachher, nicht links und rechts.)
James Moore
Wenn Sie mehrere Cursor auf mehrere Parameter verschiedener Methoden haben, können diese zusammen verschoben werden.
WesternGun
15

Ich bin nicht sicher, ob dies in IDEA möglich ist, aber Sie könnten versuchen, Editor-Makros für Zwei-Parameter-Methoden zu verwenden:

  • Editor -> Makros -> Makroaufnahme starten
  • Notieren Sie Ihr Makro:
    • Ctrl+ F6, um das Dialogfeld " Signatur ändern" zu öffnen
    • Alt+ , um den ersten und den zweiten Parameter zu tauschen
    • TabDeaktivieren Sie die Registerkarte Parameter und lassen Sie die Schaltfläche Refactor den Fokus erhalten
    • Enter um den Dialog beim Refactoring zu schließen
  • Editor -> Makros -> Stoppen Sie die Makroaufzeichnung und geben Sie Ihrem Makro einen Namen, sagen wir "Tauschen Sie die Methodenparameter 1 und 2 aus".

Greifen Sie dann über das Menü Editor -> Makros auf Ihr Makro zu oder weisen Sie ihm unter Einstellungen -> Keymap -> Hauptmenü / Bearbeiten / Makros / Swap-Methodenparameter 1 und 2 eine benutzerdefinierte Verknüpfung zu . Es sieht für mich sehr schmutzig und kontextfrei aus, aber vielleicht könnte es Ihnen ein wenig helfen.

Lyubomyr Shaydariv
quelle
10

Unter Ubuntu 18.04 lautet die Standardverknüpfung Strg + Alt + Umschalt + Super + Links / Rechts, um ein Argument nach links oder rechts zu verschieben.

Dies ist so, dass es so eingerichtet ist, dass es nicht mit einigen der neuen Verknüpfungen auf Betriebssystemebene kollidiert

Timmeh
quelle
1
danke, obwohl es Fingergymnastik erfordert, ist dies so viel besser als die Notwendigkeit, einen separaten Schlüssel zu binden.
gMale