Wie entferne ich nachgestellte Leerzeichen in Eclipse automatisch?

422

Die Frage besteht aus zwei Teilen, von denen ich bereits eine Antwort habe.

  1. Wie entferne ich nachfolgende Leerzeichen automatisch aus der gesamten zu bearbeitenden Datei ? -> Antwort: Verwenden Sie das AnyEdit-Plugin , das bei jedem Speichern in der Datei so eingestellt werden kann.
  2. Wie entferne ich nachgestellte Leerzeichen automatisch nur aus den Zeilen, die ich geändert habe ? -> Das weiß ich nicht und würde mich über jede Hilfe freuen.
Jan Żankowski
quelle
97
Ich würde mich freuen, wenn ich Eclipse davon überzeugen könnte, keine nachgestellten Leerzeichen mehr hinzuzufügen, die ich nicht eingegeben habe.
Divegeek
5
Du brauchst kein Plugin. Verwenden Sie einfach C ++ -> Editor -> Aktionen speichern. Auch Allgemein -> Editoren -> Texteditoren -> Leerzeichen anzeigen (für detaillierte Einstellungen darauf klicken) ist äußerst praktisch.
Trass3r
3
Die Standard-Speicheraktion schneidet keine nachgestellten Leerzeichen in Java Doc-Kommentaren. Es ist auch dadurch eingeschränkt, dass es nur mit Java-Dateien funktioniert. Wir haben ein Codeüberprüfungssystem, das alle nachfolgenden Leerzeichen als Fehler markiert. Das AnyEdit ist von unschätzbarem Wert, um nachfolgende Leerzeichen für alle Dateitypen zu berücksichtigen. Es kann auch hilfreich sein, herauszufinden, welche Einschränkungen Ihr Unternehmen für Software von Drittanbietern hat. AnyEdit Plugin hat eine EPL-Lizenz ( opensource.org/licenses/eclipse-1.0.php ) [Von hier: andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal
1
Ich konnte nicht herausfinden, warum plötzlich Leerzeichen am Zeilenende entfernt werden, bis ich Ihre Frage sah und herausfand, dass es sich um AnyEditPlugin handelte. Vielen Dank!
Tzafrir

Antworten:

142
  1. Leerzeichen aus der gesamten zu bearbeitenden Datei entfernen :

Preferences-> Java-> Editors-> Save Actions-> prüfen Perform the selected actions on save-> prüfen Additional actions-> klicken Configure..-> zur Code organizingRegisterkarte gehen -> prüfen Remove trailing whitespace-> auswählen All lines.

  1. Leerzeichen nur aus den Zeilen entfernen, die ich geändert habe :

Preferences-> Java-> Editor-> Save Actions-> check " Perform the selected actions on save-> check Format source code-> selectFormat edited lines .

Beachten Sie, dass kein Klick erforderlich ist. Configure the formatter settings on the Formatter pageAlle Codestile enthalten automatisch das Entfernen von nachgestellten Leerzeichen. Zumindest konnte ich in der Formatter-Konfiguration keine Einstellung dafür finden, und es funktionierte sofort für integrierte Java-Konventionen, Eclipse- , Eclipse 2.1-Stile sowie GoogleStyle .

Wenn dieses Set-up verwenden, müssen Sie natürlich auch deaktivieren , die Lösung zu Teil 1 der Frage.

Eclipse version checked: 4.5.2, 4.11
Dan Berindei
quelle
Wie definiere ich das Format? Benutze ich den Formatierer-Link oder die Schaltfläche Konfigurieren?
Vijay Kotari
Diese Option wird auch in PDT für PHP unter Aktionen speichern angezeigt.
thaddeusmt
1
@ VijayKotari Antwort wurde bearbeitet - es muss kein Format definiert werden.
Jan Żankowski
350

Ich gehe davon aus, dass Ihre Fragen sich auf Java-Code beziehen. In diesem Fall benötigen Sie keine zusätzlichen Plugins, um 1) zu erreichen. Sie können einfach zu Einstellungen -> Java -> Editor -> Aktionen speichern gehen und es so konfigurieren , dass nachgestellte Leerzeichen entfernt werden .

Nach alledem möchten Sie dies auch zu einer teamweiten Umgebung machen, oder? Um Ihnen das Leben zu erleichtern und nicht jedes Mal, wenn Sie einen neuen Arbeitsbereich haben, daran denken zu müssen, ihn einzurichten, können Sie die Speicheraktion als projektspezifische Voreinstellung festlegen, die zusammen mit dem Code in Ihrem SCM gespeichert wird.

Klicken Sie dazu mit der rechten Maustaste auf Ihr Projekt und gehen Sie zu Eigenschaften -> Java-Editor -> Aktionen speichern . Von dort aus können Sie projektspezifische Einstellungen aktivieren und konfigurieren, um nachfolgende Leerzeichen (unter anderem) zu entfernen.

NB : Diese Option wurde in Eclipse Kepler (4.3) und den folgenden Versionen entfernt.

NB # 2: Die Option scheint wieder in Eclipse Luna zu sein -Luna Service Release 1a (4.4.1)

gcastro
quelle
2
Danke, gcastro - es ist einfacher als AnyEdit. Leider ist es für die gesamte Datei, die bearbeitet wird. Ich weiß immer noch nicht, wie ich es nur für die Zeilen machen soll, die ich geändert habe - es sieht so aus, als ob es momentan wahrscheinlich unmöglich ist.
Jan Żankowski
7
Gut für Java; gut auch für C / C ++; aber nicht für Python in PyDev.
Craig McQueen
14
Für Python in PyDev habe ich hierfür eine Funktionsanforderung gestellt. Siehe: sourceforge.net/tracker/…
Craig McQueen
5
Zu Ihrer Information ... Gleiches Konzept für PHP. Einstellungen -> PHP -> Editor -> Aktionen speichern.
Seanmrafferty
1
Ich weiß nicht, ob dies jemals funktioniert hat, aber es scheint in der neuesten Version von Eclipse (Kepler) sicherlich nicht zu funktionieren. Sie können den Formatierer nur für bearbeitete Zeilen ausführen, aber das Trimmen von Leerzeichen ist auf alle Zeilen beschränkt oder das Ignorieren leerer Zeilen - sehr ärgerlich.
Thor84no
73

Sie benötigen dazu kein Plugin. Wenn Sie beispielsweise JAVA codieren, können Sie nachfolgende Leerzeichen löschen, indem Sie Speicheraktionen konfigurieren:

Eclipse 3.6

Preferences-> Java-> Editors-> Save Actions-> Prüfen Perform the selected actions on save-> Prüfen Additional actions-> Klicken Sie auf die Configure..Schaltfläche.

Code organizingÜberprüfen Sie auf der RegisterkarteRemove trailing whitespace

Dave
quelle
4
Dies ist die erste Antwort, die ausdrücklich empfiehlt, unter "Zusätzliche Aktionen" nach "Nachfolgendes Leerzeichen entfernen" zu suchen. Vielen Dank.
DavidRR
7
Dies funktioniert nur für Java-Dateien. Normalerweise arbeite ich mit Dutzenden von Erweiterungen
Eildosa
Funktioniert für Eclipse 4.12
Matilda Smeds
46

PyDev kann dies entweder durch Ctrl+ Shift+ tun, Fwenn Sie die Code-Formatierungsoption dafür eingestellt haben, oder durch during saving:

Eclipse-> Window-> Preferences-> PyDev-> Editor-> Code Style->Code Formatter :

Ich benutze mindestens diese:

  • Automatisches Formatieren vor dem Speichern
  • Richtige Trimmlinien?
  • Fügen Sie am Ende der Datei eine neue Zeile hinzu
Ciantic
quelle
5
Dies betrifft nicht die Frage, wie nur Leerzeichen aus bearbeiteten Zeilen entfernt werden. Es ist auch eine gefährliche Funktion, da alle Code Formatter-Optionen ausgeführt werden und eine nicht aktivierte Option nicht mit "ignorieren / nicht verwenden" identisch ist. ex: Wenn „Use Leerzeichen nach Kommata“ nicht markiert ist Code Formatter wird entfernen diese Räume statt sie zu ignorieren Sie die Option.
JCotton
7
In PyDev Code Formatter gibt es eine neue Option: Wenden Sie beim Speichern die Formatierung nur in geänderten Zeilen an.
Warvariuc
2
-1 für eine zu allgemeine Antwort - die Frage betraf nur Leerzeichen; Wenn Sie die automatische Code-Formatierung aktivieren, enthalten Ihre Quell-Commits ungeplante Inhalte, was zu einem unordentlichen Verlauf führt, da Commits Inhalte enthalten, die nicht mit dem Commit-Titel zusammenhängen.
Erik Kaplun
36

Gehen Sie wie folgt vor:

Preferences-> Java-> Editor->Save Actions

Geben Sie hier die Bildbeschreibung ein

Sumit Singh
quelle
19

Sie können einen Schlüssel in Eclipse zuordnen, um nachfolgende Leerzeichen in der gesamten Datei manuell zu entfernen, jedoch nur auf Anfrage und nicht automatisch beim Speichern. (Einstellungen / Schlüssel und dann eine Reihe von Schlüsseln dem abschließenden Leerzeichen Datei / Entfernen zuordnen.) Dies kann nützlich sein, wenn Sie alle neuen Dateien bereinigen möchten, aber den alten Code unberührt lassen möchten.

Eine andere Strategie besteht darin, die visuelle Anzeige von Leerzeichen zu aktivieren, damit Sie zumindest wissen, wann Sie nachgestellte Leerzeichen hinzufügen. Soweit ich weiß, gibt es zwar keine Möglichkeit, nur nachgestellte Leerzeichen anzuzeigen, aber ich bin froh, dass ich mich als falsch erwiesen habe.

Kena
quelle
Vielen Dank für diese Antwort! Bisher ist es der einzige Weg, den ich für das Aptana-Plugin gefunden habe.
Igor Zinov'yev
11

Zur Not können Sie für Editoren, die das Entfernen von nachgestellten Leerzeichen überhaupt nicht unterstützen (z. B. den XML-Editor), diese aus allen Zeilen entfernen, indem Sie suchen und ersetzen, reguläre Ausdrücke aktivieren und dann "[\ t] suchen. + $ "und durch" "ersetzen (leer). Es gibt wahrscheinlich eine bessere Regex, um das zu tun, aber es funktioniert für mich, ohne AnyEdit installieren zu müssen.

Malvineous
quelle
9

Ich würde auch AnyEdit sagen. Diese spezifischen Funktionen werden nicht bereitgestellt. Wenn Sie und Ihr Team jedoch bei jeder Speicheraktion die AnyEdit-Funktionen verwenden, darf beim Öffnen einer Datei kein nachfolgendes Leerzeichen vorhanden sein.

Wenn Sie diese Datei ändern und neue nachfolgende Leerzeichen hinzufügen, entfernt AnyEdit während des Speichervorgangs nur diese neuen Leerzeichen, da sie die einzigen nachfolgenden Leerzeichen in dieser Datei sind.

Wenn Sie aus bestimmten Gründen die nachgestellten Leerzeichen in den Zeilen beibehalten müssen, die nicht von Ihnen geändert wurden, habe ich keine Antwort für Sie und bin mir nicht sicher, ob diese Art von Funktion in einem Eclipse-Plugin vorhanden ist ...

Romain Linsolas
quelle
4
Ja, ich möchte die Leerzeichen in den Zeilen behalten, die nicht von mir geändert wurden. Dies ist das Standardverhalten von Intellij Idea (Leerzeichen in meinen Zeilen entfernen, sie in anderen beibehalten), und ich möchte dies in Eclipse erhalten . Danke für die Antwort.
Jan Żankowski
5

Für PHP gibt es auch eine Option:Geben Sie hier die Bildbeschreibung ein

Hey Mann
quelle
4

Mit sed, dem Unix-Befehlszeilentool, gibt es eine sehr einfache Möglichkeit, dies zu tun. Sie könnten wahrscheinlich ein Makro in Eclipse erstellen, um dies auszuführen:

sed -i 's/[[:space:]]*$//' <filename>
jcoffland
quelle
4

Wie @Malvineous sagte, ist es nicht professionell, sondern eine Problemumgehung, die Find / Replace-Methode zu verwenden, um nachgestellten Speicherplatz zu entfernen (siehe unten, einschließlich Tab U + 0009 und Whitespace U + 0020).
Drücken Sie einfach Strg + F (oder Befehl + F).

  1. Finden [\t ][\t ]*$
  2. Durch leere Zeichenfolge ersetzen
  3. Verwenden Sie reguläre Ausdrücke
  4. Alles ersetzen

extra:
Zum Entfernen von führendem Leerzeichen suchen ^[\t ][\t ]*anstelle von [\t ][\t ]*$
Zum Entfernen von Leerzeilen suchen^\s*$\r?\n

Fuweichin
quelle
1
Wie wäre es [\t ]+$statt [\t ][\t ]*$?
Jonah Graham
1

Mir ist keine Lösung für den zweiten Teil Ihrer Frage bekannt. Der Grund ist, dass es nicht klar ist, wie ich mich ändern soll . Wann geändert? Nur zwischen 2 Speichern oder zwischen Commits ... Grundsätzlich - vergessen Sie es.

Ich gehe davon aus, dass Sie sich an eine Richtlinie halten möchten, aber den Rest des Codes nicht berühren. Die Richtlinie sollte jedoch insgesamt verwendet werden und nicht für Bisse und Stücke. Mein Vorschlag ist also: Ändern Sie den gesamten Code in die Richtlinie: Es handelt sich um eine einmalige Operation, aber stellen Sie sicher, dass alle Ihre Entwickler dasselbe Plugin (AnyEdit) mit denselben Einstellungen für das Projekt haben.

van
quelle
7
Da es sich um eine Speicheraktion handelt, werden die Zeilen zwischen den Speicherungen geändert. Eclipse verfolgt diese Linien bereits zur Markierung in der Seitenleiste.
Starblue
0

Ich habe diesen Befehl für git verwendet: git config --global core.whitespace cr-at-eol

Es ^Mwerden nachgestellte Zeichen entfernt .

user7577563
quelle