Trimmen Sie nachfolgende Leerzeichen in Xcode

103

Gibt es eine Möglichkeit, Xcode zu zwingen, nachfolgende Leerzeichen beim Speichern von Dateien zu kürzen?

Ich verwende Version 3.1.3, wenn das wichtig ist.

Alexander Gladysh
quelle

Antworten:

22

Sie können ein Skript erstellen und an eine Tastenkombination binden:

  • Wählen Sie Menü Skripte> Benutzerskripte bearbeiten ...
  • Drücken Sie die + -Taste und wählen Sie Neues Shell-Skript
  • Geben Sie ihm einen Namen wie "Strip Trailing Spaces" und eine Verknüpfung wie ⌃⇧R.
  • Stellen Sie den Eingang auf "Auswahl" und den Ausgang auf "Auswahl ersetzen".

Geben Sie dann das folgende Skript ein:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}
Darren
quelle
9
Ah ja, so einfach ... Danke. Gibt es eine Möglichkeit, dies mit dem Speichern von Dateien zu verknüpfen?
Alexander Gladysh
Um an einer gesamten Datei zu arbeiten (was wahrscheinlich das ist, was Sie tun möchten), setzen Sie die Eingabe auf "Gesamtes Dokument" und die Ausgabe auf "Dokumentinhalt ersetzen". Dadurch bleibt der Cursor jedoch am Ende der Datei.
SMBiggs
7
Diese Antwort ist ab Xcode 4.4 veraltet. Siehe die Antwort von Martin Stolz.
Basil Bourque
238

Ab Xcode 4.4 werden Leerzeichen standardmäßig automatisch gekürzt, es sei denn, die Zeile besteht ausschließlich aus Leerzeichen. Sie können auch aktivieren Including whitespace-only lines, um dies zu beheben, was standardmäßig nicht aktiv ist.

Gehe zu Xcode > Preferences > Text Editing > While editing

Screenshot der Xcode-Einstellungen

Martin Stolz
quelle
15
Diese Einstellung schneidet das nachgestellte Leerzeichen einer Zeile erst ab, nachdem der Cursor diese Zeile verlassen hat. Sie können also weiterhin eine Datei mit einer Zeile nachgestellten Leerzeichen speichern, wenn sich der Cursor beim Speichern in dieser Zeile befindet.
ma11hew28
7
Warum um alles in der Welt ist dies nicht die Standardeinstellung? Wenn Sie eine vorhandene Datei mit nachgestellten Leerzeichen haben, markieren Sie einfach alle, schneiden Sie sie aus, speichern Sie sie, fügen Sie sie ein und speichern Sie sie.
Friederbluemle
Dies muss die Hacky-Script-Lösung für diese Antwort überschreiben.
Urda
7
Die Verwendung dieses + ctrl-ifür alle vorhandenen Dateien sorgt für
nachfolgende
24

Ich verwende das Google Toolbox für Mac Xcode-Plugin . Es fügt einen Parameter "Leerzeichen beim Speichern korrigieren" hinzu, mit dem nachfolgende Leerzeichen beim Speichern abgeschnitten werden. Ich habe das von Emacs sehr vermisst.

Maxime
quelle
1
Ich benutze dieses Plugin auch. Es macht was es sagt.
Nathan
Wäre perfekt, leider funktioniert es momentan nicht auf Xcode 4 :(
deepwell
6
Wir haben jetzt einige grundlegende Xcode 4-Unterstützung. Sehen Sie unser neues Plugin
dmaclach
1
Wo finde ich den Parameter "Leerzeichen beim Speichern korrigieren"?
Jhasse
Ich habe es endlich geschafft, GTM auf Xcode 4.3.2 zum Laufen zu bringen, aber die Installationsanweisungen aus dem GTM-Wiki schienen ungültig zu sein. Anstatt das .xcplugin einzulegen ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins(gemäß den Anweisungen von Google), musste ich es einfügen /Applications/Xcode.app/Contents/PlugInsund Xcode neu starten.
Kristofer Sommestad
3

Für Xcode 8 habe ich das Swimat Xcode-Plug-In zum Formatieren von Swift-Code installiert , mit dem alle nachgestellten Leerzeichen und Nur-Leerzeichen entfernt wurden.

Installationsmethoden

  1. Installation über Homebrew-Fass:

    brew cask install swimat
  2. Laden Sie die App direkt herunter:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip

  3. Klonen Sie den extensionZweig und archivieren Sie ihn in der Mac App.

Verwendung

Nach der Installation können Sie Swimat in Xcode über ausführen Editor -> Swimat -> Format.

Moollaza
quelle
Dieses Tool entfernt keine Leerzeilen.
Mehdico
1

Dies ist in Xcode 3.2 nicht möglich

Bearbeiten:

Ich habe diese Frage so kurz beantwortet, weil es keine Möglichkeit gibt, dies richtig zu machen .

Da es sich um Software handelt, können Sie natürlich alles tun: Beginnend mit Input Manager-Hacks oder anderen Methoden der Code-Injection bis hin zum systemweiten Abfangen von Tastaturen können Sie Ihr lokales System jederzeit so ändern, dass alles möglich ist. Sie können eine Applescript-Ordneraktion (arrgh) einrichten oder einen Startdämon und die FSEvents-Funktion verwenden, um Ihre Quellcodedateien zu überwachen.

Sie können Xcode auch einige Skripte hinzufügen (Benutzerskripte im Menü, Skriptphasen in Zielen, benutzerdefinierte Aktionen im Organizer, es gibt sogar die sehr unbekannte Möglichkeit eines Startskripts), aber alle diese Lösungen sind fehlerhaft, da es sich um die handelt Benutzer oder benutzerdefiniertes Setup auf dem Computer des Benutzers.

Mir ist keine Lösung bekannt, die einfach nach dem Auschecken eines Projekts von SCM funktioniert. Ich glaube, dass dieses und ähnliche Anpassungsskripte erforderlich sind, daher habe ich einen Fehler gemeldet (Radar 7203835, "Feature: Weitere Benutzer-Skript-Trigger im Xcode-Workflow"). Ich habe noch kein Feedback erhalten.

Hier ist der vollständige Text des Radareintrags:

Es wäre nützlich, mehr Orte zum Ausführen von Skripten in Xcode zu haben.

Beispiele:

  1. Pre-Build-Skripte
    Pre-Build-Skripte können verwendet werden, um Voraussetzungen wie * .xcconfig-Dateien oder config.h-Header zu erstellen. Dies ist mit einer "Run Script Build-Phase" nicht möglich, da die Abhängigkeitsverfolgung stattfindet, bevor eine Build-Phase ausgelöst wird.

  2. Post-Build-Skripte
    Ähnlich wie oben, jedoch nach Abschluss des Builds ausgeführt (einschließlich Codesignatur usw.). Nützlich für zusätzliche Verpackung, Gültigkeitsprüfung usw.

  3. SCM-Commit-Skripte vor / nach dem Festschreiben.
    So überprüfen Sie die Projektintegrität

  4. Skript zum Speichern von Dateien vor / nach der Datei.
    So überprüfen / ändern Sie eine Datei vor dem Speichern. ZB Cody Verschönerer laufen lassen

  5. Benutzerdefinierte Projektaktionen.
    Ich bin mir der Fähigkeit des Veranstalters bewusst, beliebige Aktionen zu definieren. Dies ist jedoch eine Funktion pro Benutzer (nicht Teil des Projekts). Ich möchte Aktionen wie Erstellen oder Bereinigen definieren, die im Erstellungsmenü angezeigt werden und Teil eines Projekts sind.

Nikolai Ruhe
quelle
Bearbeitet, um zu beantworten, warum Problemumgehungen in diesem Fall unbefriedigend sind
Nikolai Ruhe
2
Vielen Dank. Ich bin zwar dafür, es richtig zu machen, aber ich würde mich mit einem nicht allzu aufdringlichen Hack zufrieden geben. Diese zusätzlichen Leerzeichen sind wirklich nervig.
Alexander Gladysh
0

Der beste und einfachste Weg ohne Skripte, Hacks und vieles mehr. Gehen Sie einfach zu Suchen und Ersetzen. Der beste und einfachste Weg, ohne Skripte, Hacks und vieles mehr zu verwenden. Gehen Sie einfach zu Suchen und Ersetzen und drücken Sie "Alt / Option + Leerzeichen" und drücken Sie die "Leertaste" in der Ersetzungsleiste und klicken Sie dann auf Alle ersetzen. Es wird die Leerzeichen durch normale Leerzeichen ersetzen und die Warnung / der Fehler wird verschwinden !!

H2zee
quelle
1
Entfernt dies nur nachgestellte Leerzeichen, wie in der Frage angefordert?
Blastfurnace