IntelliJ IDEA Methode zum Bearbeiten mehrerer Zeilen


113

Ich habe dies in TextMate gesehen und mich gefragt, ob es in IDEA eine Möglichkeit gibt, dies zu tun.

Angenommen, ich habe den folgenden Code:

 leaseLabel = "Lease";
 leaseLabelPlural = "Leases";
 portfolioLabel = "Portfolio";
 portfolioLabelPlural = "Portfolios";
 buildingLabel = "Building";

Was ist der beste Weg, um '+ "foo"' an jede Zeile anzuhängen? Der Spaltenmodus funktioniert nicht, da die Linien auf der rechten Seite nicht korrekt ausgerichtet sind ... es sei denn, es gibt eine einfache Möglichkeit, den Text richtig auszurichten: P.


Dies ist etwas, das ich so selten tun muss, dass ich mich nie daran erinnern würde, wie ich es verwenden würde, selbst wenn es einen speziellen Modus in meinem Editor gäbe. Ich würde nur die Zwischenablage verwenden, wenn es nur für ein paar Zeilen wäre (wie oben). Wenn es sich um Hunderte von Zeilen handelt, gehe ich zum Such- / Ersetzungs-Gadget über.
Michael Burr

Erstellen Sie im Spaltenmodus ganz links 5 Cursor. Verwenden Sie dann Strg-Rechts-Pfeil, um nach rechts zu gelangen. Mehrere Cursor, Makros und Search-Replace sind großartige Möglichkeiten, um dies zu erreichen! Ich kann mich nicht entscheiden, welches mir am besten gefällt.
Daniel Alexiuc

Seine Option + Umschalt + Klicken für Macbook. Alle Intellij-Verknüpfungen: docs.google.com/document/d/…
Soham Mehta

Antworten:


174

Seit Idea IntelliJ IDEA 13.1 besteht die Möglichkeit, mehrere Zeilen zu bearbeiten.

Verwenden:

Alt+ Shift+ Mausklick

zur Auswahl. Mehr über diese neue Verbesserung im IntelliJ-Blogpost hier . Sehr nützliche Funktion.


1
Danke für den Link. Ich bin versehentlich auf diese Funktion gestoßen, aber irgendwie konnte ich nicht herausfinden, welche Tastenkombination ich versehentlich gedrückt habe :)
aberrant80

12
Ab Februar 2015 Alt-Umschalt-Einfügen: Spaltenauswahlmodus ODER einfach Alt-Auswahl. sehr leistungsfähig und einfach zu bedienen. Ich bin mir nicht sicher, warum die Leute dem OP immer wieder sagen, dass es "Suchen und Ersetzen" verwenden soll, wenn er eindeutig nach gleichzeitiger Zeilenbearbeitung fragt - die Tatsache, dass er fragt, dass er klug genug ist, sich des Suchens und Ersetzens bewusst zu sein.
RichieHH

4
Für Mac ist es Alt + Klicken.
Gowtham Gopalakrishnan

5
Und fürs Erste einfach die mittlere Maustaste + ziehen.
WesternGun

1
Seine Option + Umschalt + Klicken für Macbook. Alle Intellij-Verknüpfungen: docs.google.com/document/d/…
Soham Mehta

114

Ich verwende den Spaltenauswahlmodus ( Cmd+ Shift+ 8auf dem Mac), mit dem Sie mehrere Cursor über Shift+ Upoder Shift+ erstellen und Downdann alle Zeilen zusammen bearbeiten können.

Ab IntelliJ IDEA 14 gibt es oben / unten auch Clone Caret :

  • Windows : Ctrl, Ctrl+ Up/Down
  • MacOS : Option, Option+ Up/Down

(Halten Sie den zweiten Druck auf die Modifizierertaste gedrückt und drücken Sie dann die Pfeiltaste.)


5
Ich hatte versehentlich Cmd + Shift + 8 gedrückt und konnte für mein ganzes Leben nicht herausfinden, warum zum Teufel alles "mehrzeilig" wählbar war. Danke für die Befehlsverknüpfung!
Robin Jonsson

4
Double <kbd> Ctrl </ kbd> funktioniert bei IntelliJ Ultimate 2016.1 nicht. Ich muss die doppelte <kbc> Option </ kbd> verwenden, die zweite Taste gedrückt halten und dann die Pfeiltasten drücken.
Big McLargeHuge

1
@ DaveKennedy Sie haben absolut Recht, Jet Brains hat die Standardverknüpfung geändert.
Alexander Bogushov

Doppel-Strg-Lösung ist am besten, da es erlaubt, meine Hände auf der Tastatur zu halten
Andrejs

Um die Tastenbelegung so zu ändern, dass sie tatsächlich mit einem Ihrer anderen Editoren übereinstimmt, gehen Sie zu Einstellungen -> Keymap und suchen Sie im rechten Suchfeld nach "Clone Caret". Klicken Sie mit der rechten Maustaste auf die Aktion und wählen Sie "Tastaturkürzel hinzufügen". Wenn das Speichern einen Konflikt verursacht, klicken Sie trotzdem auf "OK". Dann wird eine weitere Eingabeaufforderung hinzugefügt, in der Sie gefragt werden, ob Sie die andere Zuweisung "entfernen" möchten (wahrscheinlich was Sie möchten) oder "verlassen" (absichtlich zwei Dinge mit einer Verknüpfung auszulösen, scheint seltsam ...) oder "Abbrechen" (warum)
Haben

38

Ein weiterer Ansatz nur für die Tastatur. Es ist möglich (seit Version 13.1), Alt+ J/ Shift+ Alt+ J( Ctrl+ Gfür OS X) Verknüpfungen zum Erstellen mehrerer Carets zu verwenden. Alt+ Jwählt das nächste Vorkommen des aktuell ausgewählten Textes aus und fügt ein weiteres Caret hinzu.

  1. Wählen Sie das erste Semikolon aus

Geben Sie hier die Bildbeschreibung ein

  1. Drücken Sie dann viermal Alt+J

Geben Sie hier die Bildbeschreibung ein

  1. Bearbeiten Sie, was Sie möchten

Geben Sie hier die Bildbeschreibung ein

  1. Drücken Sie Esc, um zur ersten Zeile zurückzukehren.

Geben Sie hier die Bildbeschreibung ein


5
Gott, ich habe ein Jahr lang ohne diese Funktion gelebt! Vielen Dank!
coffman21

27

Caret am Ende platzieren

Windows: CTRL + CTRL(Halten) +↑ / ↓

Mac: option + option(Halten) +↑ / ↓ .

So platzieren Sie Caret am Ende der Reihen: Verschieben Sie Caret in die oberste Reihe, klonen Sie nach unten und klicken Sie auf END .

Ändern Sie den Multi-Caret-Hotkey

So fügen Sie eine benutzerdefinierte Keymap, CTRL+ SHIFT+ A, Typ keymapund klicken Sie auf den mit Settingsals Subtext. Suche nach Clone Caret AboveundClone Caret Below .

Ich habe meine ALT+ SHIFT+ ↑ / ↓unter Windows und + zugeordnet↑ / ↓ auf Mac zugeordnet.

Bonus

Versuchen Sie halten Kombinationen CTRL, SHIFTund Pfeile für eine verbesserte Auswahl Kraft.


1
Vielen Dank für den 'END'-Kommentar, ideal für gemeinsame Zuweisungen in Variablen mit unterschiedlichen Längen.
Keegan 82

1
Dies sollte die Antwort sein, da es die vollständigste und auf den Punkt gebrachte Antwort ist. +1.
Ariel Mirra

Eine andere Möglichkeit besteht darin, "alt" zu halten und "j" gedrückt zu halten. Dadurch werden der mehrzeiligen Auswahl weiterhin Zeilen hinzugefügt.
Gaurav

13

Der Spaltenmodus funktioniert einwandfrei: Wählen Sie zuerst alle Zeilen im Spaltenmodus aus und drücken Sie dann ENDE: Jeder Cursor springt zum Ende der jeweiligen Zeile.

Unter Linux ( KEINE MAUS BENÖTIGT ):

  1. ALT+ SHIFT+ INSERTum in den Blockmodus zu wechseln

    Eingetragener Spaltenbearbeitungsmodus

  2. SHIFT + UPoder SHIFT + DOWNum mehrere Zeilen auszuwählen

    Geben Sie hier die Bildbeschreibung ein

  3. END zum Ende jeder Zeile springen

    Geben Sie hier die Bildbeschreibung ein

  4. fooGeben Sie nun ein , es wird an jede Zeile angehängt:

    Geben Sie hier die Bildbeschreibung ein

  5. Deaktivieren Sie nun alles mit ESCAPEund wechseln Sie mit wieder in den normalen Auswahlmodus ALT + SHIFT + INSERT.


9

Sie können auch eine vertikale Codeblockauswahl treffen, indem Sie mit dem Mausrad klicken und ziehen :

Geben Sie hier die Bildbeschreibung ein


8

Wählen Sie Nächstes Vorkommen:

      Alt+J on Windows, Ctrl-G on Mac OS X

Ereignis nicht auswählen:

      Alt+Shift+J on Windows, Ctrl-Shift-G on Mac OS X

Alle Vorkommen auswählen:

      Ctrl+Alt+Shift+J on Windows, Ctrl-Cmd-G on Mac OS X

Für weitere Informationen: Link


Der Punkt mit (left) Alt + Jist, dass Sie zuerst Code auswählen müssen.
Ali Zeynali

7

Ich benutze nur die Makros für solche Dinge. Ich beginne mit der Aufnahme des Makros, mache es einmal und spiele dann das Makro in jeder Zeile ab, die ich ändern möchte. Sie werden erstaunt sein, wie ausgefallen Sie mit der Makroaufnahme- / Wiedergabefunktion werden können.


Wegwerfmakros können sehr praktisch sein, um diese Art von Änderungen vorzunehmen. Wie Sie es beschreiben, ist genau das, was ich tun würde, wenn ich diese Änderungen im Zeus-Editor vornehmen würde.
Jussij

Wenn die Zeilen alle so gruppiert sind, zeichnen Sie das Makro auf, um den Cursor auch zur nächsten Zeile zu bewegen. Sie müssen das Makro nur in der ersten Zeile ausführen und so oft wiederholen, wie Sie möchten.
Weiji

Wie meinst du damit, dass du "so oft wiederholen kannst, wie du willst"? Gibt es eine Möglichkeit, ein Makro automatisch zu wiederholen?
Pypmannetjies

Bearbeiten-> Makros-> Letztes Makro wiedergeben. Ich habe das auf F12 abgebildet, aber ich habe eine nicht standardmäßige Schlüsselbindung. Ich mache das Makro einmal und fange immer wieder an, F12 zu schlagen.
Chris Kessel

Makros sind gut, aber wenn ich Ideavim auf Intellij verwende, können die Makros die Verknüpfung von
VIM

5

Es hat eine Weile gedauert, bis ich es herausgefunden habe, aber auf einem Mac können Sie zweimal drücken Option(einmal drücken, loslassen, erneut drücken, gedrückt halten) und mit Up/ Down-Tasten Carets erstellen / entfernen, wie Sie möchten.

Sie können auch Shift+ Optiongedrückt halten und klicken, um an bestimmten Stellen Carets zu erstellen / entfernen.


Das ist großartig, aber gibt es eine Möglichkeit, dies zu tun und bis zum Ende der Datei auszuwählen? Ansonsten muss ich mit Pfeil durch das Ganze scrollen und wir haben einige massive Dateien.
Jackie


3

In diesem Fall können Sie auch einfach den Code auswählen, in dem Sie dies tun möchten, und ihn ersetzen. Ersetzen Sie:

";

durch:

" + "foo";

Falls Sie es nicht wussten: Wenn Sie während des Ersetzens Text ausgewählt haben (Strg + R oder Befehlstaste + R), gilt dieser nur für das ausgewählte Textstück.


2

Halten Sie ALT gedrückt und klicken und ziehen Sie mit der Maus




1

Für neuere Versionen verwenden Sie: Alt+ Shift+Insert


1
funktioniert einwandfrei! danke @Meysam
gaurav

Eine andere Möglichkeit besteht darin, "alt" zu halten und "j" gedrückt zu halten. Dadurch werden der mehrzeiligen Auswahl weiterhin Zeilen hinzugefügt.
Gaurav

0

Was ich normalerweise benutze (NetBeans, aber ich glaube, es ist einfach in jeder IDE zu verwenden) ist find&replace.

Sie finden ;\nes einfach und ersetzen es durch, + $foo;\ndann wenden Sie es nicht auf ALLE Zeilen an, sondern setzen den Cursor auf die erste Zeile und klicken einfach 7 Mal auf die Schaltfläche "Ersetzen" (abhängig von Ihrer IDE, nehme ich an), um 7 Zeilen in kürzester Zeit zu ändern. Einfach und unkompliziert und sollte mit der grundlegendsten und fortschrittlichsten IDE durchgeführt werden, die Sie finden können.

BEARBEITEN: In IntelliJ (ich weiß nicht, ob es auch in anderen IDEs funktioniert) können Sie Ihre reguläre Suche und Ersetzung nur zur Auswahl verwenden, sodass Sie tatsächlich "Alle ersetzen" verwenden können.


Natürlich gibt es Fälle, in denen Sie diese Methode nicht anwenden können, wenn Linien völlig anders sind oder so, aber ich denke, Sie können selbst mit fortgeschrittenen Methoden nicht viel gegen diese Situationen tun.
Srneczek

Warum also -1? Ich beantwortete die Frage, die er stellte. -1 die Frage, wenn Sie denken, es ist dumm, nicht die richtige Antwort. Akzeptierte Antwort mit Makro ist meiner Meinung nach eine langsamere Methode, um ehrlich zu sein.
Srneczek


0

Alle oben genannten Antworten sind großartig, aber wenn Sie am Ende von Zeilen mehrzeilig bearbeiten möchten, müssen Sie die Taste "Ende" drücken, während Ihre mehrzeilige Auswahl aktiv ist.

Für Mac Die Befehlsfolge lautet:

shift option click # Wählen Sie eine Reihe von Zeilen

command right arrow # gehe zum Zeilenende

Dies führt eine mehrzeilige Auswahl am Ende der Zeile durch und Sie können sie nach Bedarf bearbeiten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.