Przytnij końcowe spacje w Xcode

103

Czy istnieje sposób, aby zmusić Xcode do przycinania końcowych białych znaków podczas zapisywania pliku?

Używam wersji 3.1.3, jeśli to ma znaczenie.

Alexander Gladysh
źródło

Odpowiedzi:

22

Możesz utworzyć skrypt i powiązać go ze skrótem klawiaturowym:

  • Wybierz menu Skrypty> Edytuj skrypty użytkownika ...
  • Naciśnij przycisk + i wybierz Nowy skrypt powłoki
  • Nadaj mu nazwę, na przykład „Usuń końcowe spacje”, i nadaj mu skrót, np. ⌃⇧R.
  • Ustaw wejście na „Wybór” i Wyjście na „Zastąp wybór”

Następnie wprowadź następujący skrypt:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}
Darren
źródło
9
Ach, tak, takie proste ... Dzięki. Czy jest jakiś sposób, aby skojarzyć to z zapisem pliku?
Alexander Gladysh,
Aby pracować nad całym plikiem (co prawdopodobnie chcesz zrobić), ustaw Wejście na „Cały dokument” i Wyjście na „Zastąp zawartość dokumentu”. Jednak powoduje to pozostawienie kursora na dole pliku.
SMBiggs
7
Ta odpowiedź jest przestarzała od wersji Xcode 4.4. Zobacz odpowiedź Martina Stolza.
Basil Bourque
239

Począwszy od Xcode 4.4 białe spacje będą domyślnie przycinane automatycznie, chyba że cała linia jest białą. Możesz także aktywować, Including whitespace-only linesaby to naprawić, co domyślnie nie jest aktywne.

Iść do Xcode > Preferences > Text Editing > While editing

Zrzut ekranu preferencji Xcode

Martin Stolz
źródło
15
To ustawienie przycina tylko końcowe białe znaki wiersza po tym, jak kursor opuści tę linię. Tak więc nadal umożliwia zapisanie pliku z jedną linią końcowych białych znaków, jeśli kursor znajduje się w tej linii podczas zapisywania.
ma11hew28
7
Dlaczego, u licha, nie jest to domyślne? Jeśli masz istniejący plik z końcowymi spacjami, po prostu zaznacz wszystko, wytnij, zapisz, wklej, zapisz.
friederbluemle
To musi nadpisać hacky skrypt w tej odpowiedzi.
Urda
7
Używanie tego + ctrl-ina wszystkich istniejących plikach pozwala
usunąć
24

Używam wtyczki Google Toolbox for Mac Xcode . Dodaje ona parametr „Prawidłowe białe znaki przy zapisywaniu”, który usuwa końcowe spacje przy zapisywaniu. Bardzo za tym tęskniłem od emacsa.

Maxime
źródło
1
Używam również tej wtyczki. Robi to, co mówi.
Nathan,
Byłoby idealnie, niestety w tej chwili nie działa na Xcode 4 :(
deepwell
6
Mamy teraz podstawową obsługę Xcode 4. Zobacz naszą nową wtyczkę
dmaclach
1
Gdzie mogę znaleźć parametr „Poprawne spacje przy zapisywaniu”?
jhasse
W końcu udało mi się uruchomić GTM na Xcode 4.3.2, ale instrukcje instalacji z wiki GTM wydawały się nieprawidłowe. Zamiast umieszczać wtyczkę .xcplugin ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins(zgodnie z instrukcjami Google) musiałem ją włożyć /Applications/Xcode.app/Contents/PlugInsi ponownie uruchomić Xcode.
Kristofer Sommestad
3

W przypadku Xcode 8 zainstalowałem wtyczkę swimat Xcode do formatowania kodu Swift, która usunęła wszystkie końcowe spacje i tylko białe znaki.

Metody instalacji

  1. Zainstaluj przez homebrew-cask:

    brew cask install swimat
  2. Pobierz aplikację bezpośrednio:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip

  3. Sklonuj extensiongałąź i zarchiwizuj w aplikacji Mac.

Stosowanie

Po zainstalowaniu możesz uruchomić Swimat w Xcode za pośrednictwem Editor -> Swimat -> Format.

moollaza
źródło
to narzędzie nie usuwa pustych linii.
Mehdico
1

Nie jest to możliwe w Xcode 3.2

Edytować:

Odpowiedziałem na to pytanie tak krótko, ponieważ nie ma sposobu, aby to zrobić poprawnie .

Oczywiście, ponieważ jest to oprogramowanie, możesz zrobić wszystko: zaczynając od hacków Input Manager lub innych sposobów wstrzykiwania kodu do przechwytywania klawiatury w całym systemie, możesz zmienić swój lokalny system, aby robił cokolwiek w dowolnym momencie. Możesz ustawić akcję folderu Applescript (arrgh) lub użyć demona uruchamiania i narzędzia FSEvents do oglądania plików z kodem źródłowym.

Możesz także dodać kilka skryptów do Xcode (skrypty użytkownika w menu, fazy skryptów w celach, niestandardowe akcje w organizatorze, istnieje nawet bardzo nieznana możliwość skryptu startowego), ale wszystkie te rozwiązania są wadliwe, ponieważ konfiguracja użytkownika lub niestandardowa na komputerze użytkownika.

Nie znam rozwiązania, które po prostu działa po sprawdzeniu projektu z SCM. Uważam, że istnieje potrzeba tego i podobnych skryptów dostosowawczych, więc zgłosiłem błąd (radar 7203835, „Funkcja: więcej wyzwalaczy skryptów użytkownika w przepływie pracy Xcode”). Nie otrzymałem jeszcze żadnej opinii.

Oto pełny tekst wpisu radaru:

Przydałoby się mieć więcej miejsc do uruchamiania skryptów w Xcode.

Przykłady:

  1. Skrypty budowania wstępnego Skrypty budowania
    wstępnego mogą być używane do tworzenia wymagań wstępnych, takich jak pliki * .xcconfig lub nagłówki config.h. Nie jest to możliwe w przypadku „Run Script Build Phases”, ponieważ śledzenie zależności ma miejsce przed wyzwoleniem jakiejkolwiek fazy kompilacji.

  2. Skrypty po kompilacji
    Podobne do powyższych, ale uruchamiane po zakończeniu kompilacji (w tym podpisywanie kodu itp.). Przydatne do dodatkowego pakowania, sprawdzania ważności itp.

  3. Skrypty Commit przed / po SCM.
    Aby sprawdzić integralność projektu.

  4. Skrypt zapisywania pliku przed / po wysłaniu.
    Aby sprawdzić / zmienić plik przed zapisaniem. Np. Uruchom kosmetyczki

  5. Niestandardowe działania projektowe.
    Zdaję sobie sprawę ze zdolności organizatora do definiowania dowolnych działań. Ale jest to funkcja dla użytkownika (nie jest częścią projektu). Chciałbym zdefiniować działania, takie jak kompilacja lub czyszczenie, które pojawiają się w menu kompilacji i są częścią projektu.

Nikolai Ruhe
źródło
Edytowano, aby odpowiedzieć na pytanie, dlaczego obejścia są niezadowalające w tym przypadku
Nikolai Ruhe
2
Dzięki. Chociaż jestem zwolennikiem zrobienia tego we właściwy sposób, zadowalałbym się każdym niezbyt inwazyjnym włamaniem. Te dodatkowe białe spacje są naprawdę irytujące.
Alexander Gladysh
0

Najlepszy i łatwy sposób bez używania skryptów, hacków i wielu innych. Po prostu przejdź do Znajdź i zamień Najlepszy i łatwy sposób bez użycia skryptów, hacków i wielu innych. Po prostu przejdź do Znajdź i zamień i naciśnij "alt / opcja + spacja" i naciśnij przycisk "spacja" na pasku zamiany, a następnie kliknij zamień wszystko. Zastąpi białe spacje zwykłymi spacjami, a ostrzeżenie / błąd zniknie !!

H2zee
źródło
1
Czy to usuwa tylko końcowe spacje zgodnie z żądaniem w pytaniu?
Blastfurnace