Jak zmienić Eclipse, aby używał spacji zamiast tabulatorów?


895

Domyślnie wcięcia Eclipse mają znak tabulacji. Jak zmienić to na spacje?


43
@ i3ensays, ponieważ zakładki są prezentowane inaczej w różnych edytorach lub środowiskach, podczas gdy spacje są zawsze spójne.
mmmdreg

29
@mmmdreg dokładnie mój punkt widzenia. przestrzenie są sztywne i marnotrawione. Korzystanie z kart daje przeglądarce swobodę konfigurowania edytora według potrzeb. Lubię, aby moje tabulatory wyświetlały się jako 2 spacje, mój kolega 4. Nie jest to możliwe bez użycia tabulatorów. Mój kolega tutaj i ja walczymy o przestrzenie, kiedy każdy z nas formatuje w swoim edytorze; zakładki nie stanowią problemu; właśnie dlatego zostały wynalezione (podejrzewam).
i3ensays

15
@ i3ensays amen, bracie! Staram się, aby ludzie zrozumieli tę koncepcję od ponad 10 lat ( rizzoweb.com/java/tabs-vs-spaces.html ). To, co naprawdę mnie niepokoi, to to, że jako programiści moglibyście pomyśleć, że każdy zrozumie pojęcie abstrakcji (tab jest abstrakcją wcięcia kodu, podczas gdy stała liczba spacji jest implementacją zakodowaną na stałe) - ale niestety wydaje się, że że wielu programistów nie widzi tutaj abstrakcji.
E-Riz

28
@ i3ensays Twój zespół powinien mieć standard kodowania, który jasno określa sposób formatowania kodu. Oszczędziłoby to czas, zapobiegając wspomnianym bitwom. Powinieneś przyjąć jeden jak najszybciej, ale ten standard w 100% na pewno powie, że tabulatory nigdy nie będą używane, ponieważ ta święta wojna została wygrana przez „kosmicznych ludzi” przed wiekami, więc standard ci nie pomoże. Oprócz problemów z wyrównaniem, jednym z głównych powodów występowania spacji jest to, że narzędzia kontroli wersji i recenzenci kodu nie będą musieli sobie z tym radzić. Zacząłem po twojej stronie tej bitwy 20 lat temu, ale w końcu nauczyłem się obejmować przestrzeń.
Night Owl

12
Powodem jest to, że ludzie nieuchronnie kończą się kombinacjami tabulatorów i spacji, aw niektórych edytorach kod nie wyświetla się poprawnie. Jeśli wszyscy po prostu używają spacji, nie stanowi to nigdy problemu.
Eamonn McEvoy,

Odpowiedzi:


1239

Edytor Java

  1. Kliknij Okno » Preferencje
  2. Rozwiń Java » Styl kodu
  3. Kliknij Formatter
  4. Kliknij przycisk Edytuj
  5. Kliknij kartę Wcięcie
  6. W obszarze Ustawienia ogólne ustaw kartę Zasady na:Spaces only
  7. Kliknij przycisk OK, aby zastosować zmiany.

[ Uwaga : W razie potrzeby nie można nadpisać profilu o nowej nazwie jako profilu domyślnego.]

Domyślny edytor tekstu

Przed wersją 3.6:

Window->Preferences->Editors->Text Editors->Insert spaces for tabs

Wersja 3.6 i nowsze:

  1. Kliknij okno »Preferencje
  2. Rozwiń Ogólne » Edytory
  3. Kliknij Edytory tekstu
  4. Czek Wstaw spacje, aby zobaczyć tabulatory
  5. Kliknij przycisk OK, aby zastosować zmiany.

Zauważ, że domyślny edytor tekstu jest używany jako podstawa dla wielu edytorów innych niż Java w Eclipse. To zadziwiające, że to ustawienie było dostępne dopiero w 3.3.

C / C ++

  1. Kliknij Okno » Preferencje
  2. Rozwiń C / C ++ » Styl kodu
  3. Kliknij Formatter
  4. Kliknij przycisk Nowy , aby utworzyć nowy profil, a następnie OK aby kontynuować
  5. Kliknij wcięciekartę
  6. W obszarze Ustawienia ogólne ustaw zasady dotyczące kart na:Spaces only
  7. Kliknij przycisk OK, aby zastosować zmiany.

HTML

  1. Kliknij okno »Preferencje
  2. Rozwiń sieć » Pliki HTML
  3. Kliknij Edytor
  4. W obszarze Formatowanie wybierz Wcięcie za pomocą spacji przełącznik
  5. Kliknij OK, aby zastosować zmiany.

CSS

Postępuj zgodnie z tymi samymi instrukcjami dla HTML, ale wybierz Pliki CSS zamiast Pliki HTML .

JSP

Domyślnie pliki JSP są zgodne z preferencjami formatowania plików HTML.

XML

Odstępy między plikami XML konfiguruje się w Preferencjach.

  1. Kliknij Okno » Preferencje
  2. Rozwiń XML » Pliki XML
  3. Kliknij Edytor
  4. Wybierz Wcięcie za pomocą spacji
  5. W razie potrzeby możesz określić rozmiar wcięcia: liczbę spacji do wcięcia.

19
Dla tych, którzy mają zainstalowaną MyEclipse lub inne IDE zbudowane na Eclipse, możesz mieć inny edytor nadpisujący twoje ustawienia. Tak było w przypadku MyEclipse i JavaScript. Miałem włączone ustawienie „Wstaw spacje dla kart” w edytorach tekstu, ale zamiast spacji nadal używane były tabulatory. Już miałem nazwać go dniem i zapisać jako błąd, ale potem zobaczyłem drugi edytor plików JavaScript (* .js) na liście „Associated Editors”.
Jan

5
Może to być przydatna wskazówka, ale jeśli wystąpi takie samo zachowanie, sprawdź, czy plik nie ma innych powiązanych edytorów, ponieważ mogą one zastępować twoje ustawienia. Aby to zrobić, przejdź do Okno> Preferencje> Ogólne> Edytory> Powiązania plików> następnie wyszukaj rozszerzenie pliku, które rujnuje Twój dzień na tej liście> kliknij je i spójrz na poniższą listę powiązanych redaktorów
Jan

106
w przypadku istniejącego pliku Java naciśnij Ctrl-A, aby podświetlić wszystko, a następnie Ctrl-I, aby zastosować bieżące wcięcia. W przeciwnym razie istniejące karty zapobiegną spacjom w nowych wierszach utworzonych za pomocą Enter. Zastępuje również istniejące tabulatory spacjami.
topchef

4
W przypadku C / C ++ należy również zmienić C / C ++ -> „Styl kodu”. Jest to zdecydowanie najbardziej denerwujące w tym świetnym oprogramowaniu.
dashy

3
Aby być bardziej szczegółowym, w C / C ++ i Ecplipse 3.6 lub nowszym drugim krokiem było: Okno> Preferencje> C / C ++> Styl kodu> Formatyzator> Nowy, a następnie wybierz dowolną nazwę profilu, upewnij się, że Open the edit dialog nowjest włączona, naciśnij OK, a następnie w Indentationzakładka, zobaczysz Tab Policy. Ustaw na Spaces Only.
Garrett

150

W przypadku domyślnego edytora tekstu:

  • OGÓLNE » Redakcja » Edytory tekstowe » Insert spaces for tabs (zobacz)

Dla PHP:

  • PHP » Styl kodu » Formatator » Tab policy (wybierz„ spacje ”)
  • PHP » Styl kodu » Formatator » Indentation size (ustawiony na 4)

W przypadku CSS:

  • Internet » CSS » Edytor » Indent using spaces (wybierz)
  • Internet » CSS » Edytor » Indentation size (ustawiony na 4)

W przypadku HTML:

  • Internet » HTML » Edytor » Indent using spaces (wybierz)
  • Internet » HTML » Edytor » Indentation size (ustawiony na 4)

W przypadku XML:

  • XML » Pliki XML » Edytor » Indent using spaces (wybierz)
  • XML » Pliki XML » Edytor » Indentation size (ustawiony na 4)

W przypadku Javascript:

  • JavaScript » Preferencje » Styl kodu » Formatyzator » Edytuj » Indentation (wybierz„ tylko spacje ”)
  • Zmień nazwę profilu ustawień formatyzatora, aby go zapisać

W przypadku Java:

  • Java » Preferencje » Styl kodu » Formatyzator » Edytuj » Indentation (wybierz„ tylko spacje ”)
  • Zmień nazwę profilu ustawień formatyzatora, aby go zapisać

Nie widzę żadnych opcji WWW ani Javascript w katalogu głównym Preferencji (ale mam dostępną Perspektywa sieci) i chcę ustawić tabulatory jako spacje tylko dla plików html, css i javascript. Korzystam z Helios Eclipse dla programistów Java, masz pojęcie, jak mogę uzyskać tę opcję?
danny

Te ustawienia widzę w Eclipse PDT (PHP Development Tools). Eclipse PDT jest oparty na Eclipse WTP (Web Tools Platform), która obejmuje JavaScript Development Tools (JSDT) i edycję źródłową różnych formatów internetowych. Prawdopodobnie tego brakuje.
Patrick Fisher

+1 za rzeczy Java, co jest absolutnie konieczne, ponieważ ich domyślne ustawienia zastępują ogólne ustawienia edytora tekstu.
Giulio Piancastelli,

dla C, Styl kodu -> Formatyzator -> Edycja -> Wcięcie -> Ustawienia ogólne -> Zasady
kart

1
Dzięki! Działa to dobrze na Marsie. To rozczarowujące, że istnieją opcje edytora tekstu, ale nic nie rób!
paiego,


26

W przypadku CDT :

  • Przejdź do okna / preferencji » C / C ++ » Styl kodu » Formatator » Nowość
  • Utwórz nowy, ponieważ wbudowanego profilu nie można zmienić
  • MyProfile (wybierz jedną nazwę dla profilu)
  • Wcięcie » Tab Policy (wybierz tylko spacje)

23

Krótka wskazówka dla ludzi, którzy natkną się na ten wątek; jest jeszcze jedno miejsce, w którym można ustawić to ustawienie, w twoim projekcie!

Eclipse obsługuje ustawienia specyficzne dla projektu, a niektóre projekty będą używać własnych, niezarządzanych ustawień tabulatorów / spacji, które nie pojawią się nigdzie indziej niż bieżące właściwości projektu.

Można to zarządzać poprzez:

  • Kliknij prawym przyciskiem myszy bieżący projekt w Eksploratorze pakietów
  • Właściwości » Styl kodu Java
  • Turn off wszystkie opcje specyficzne dla projektu

Zasadniczo będzie to problem tylko wtedy, gdy zaimportujesz czyjś kod do swojego Eclipse.


19

Dla domyślnego edytora:

Okno » Preferencje » Edytory » Edytory tekstu »Insert spaces for tabs

wprowadź opis zdjęcia tutaj

Dla edytora Java

Okno » Preferencje » Java » Styl kodu » Formatyzator » Edytuj » Wcięcie » Tab policy „ Tylko spacje ”

wprowadź opis zdjęcia tutaj


9

Kiedy napotkałem ten problem, „użyłem spacji dla tabulatorów” ustawionych na true wszędzie, gdzie mogłem znaleźć, a mimo to wciąż otrzymywałem tabulatory. Skończyło się to na tym, że tabulatory były używane gdzie indziej w pliku i próbował zrobić inteligentne wcięcie lub coś frustrującego.

Problem został rozwiązany przez wybranie całej zawartości pliku i naciśnięcie na komputerze Mac command+shift+f. Dotyczy to określonego formatowania pliku. Nie znam tego samego skrótu klawiszowego w systemie Windows, ale spróbuj. W tym momencie zaczynam uzyskiwać oczekiwane zachowanie.


Aby uzyskać bardziej modułowe rozwiązanie tego problemu, użytkownik może również wykonać funkcję Znajdź / zamień dla \t(upewnij się, że wyrażenia regularne są włączone) i zastąpić żądaną liczbą znaków spacji
Jlewkovich

Klucz do formatowania pliku w systemie Windows jest dość podobny - Ctrl+Shift+F.
A.Alessio

5

Eclipse IDE dla programistów C / C ++, wersja: Helios Service Release 2

Musisz utworzyć nowy profil, naciskając przycisk Nowy w „Okno-> Preferencje-> Styl kodu”

Przejdź do zakładki Wcięcie i wybierz „Zasady tabulacji = Tylko miejsce”


Eclipse IDE dla programistów C / C ++, wersja: Kepler Service Release 1

Postępuj zgodnie ze ścieżką poniżej, aby utworzyć nowy profil: „Okno> Preferencje> C / C ++> Styl kodu> Formatyzator”

Przejdź do zakładki Wcięcie i wybierz „Zasady tabulacji = Tylko miejsce”


5

Pamiętaj, aby sprawdzić formater Java, ponieważ zastępuje on ustawienie „wstaw spacje dla tabulatorów” . Iść do:

Java->Code Style"->Formatter->Edit->Identation

Uwaga: aby móc zapisać konfigurację, musisz utworzyć niestandardowy format.


5

Rozwiązanie tego problemu jest bardzo proste i zawsze działa. Jest to zmiana pliku ustawień zaćmienia.

Na przykład (zmień rozmiar wcięcia HTML):


  1. Znaleziono org.eclipse.wst.html.core.prefsplik, w którym powinien byćyour_workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/
  2. Dodaj / zmień na wiersz w pliku:
indentationChar=space

indentationSize=4

1
Na Ubuntu 14.04.03 LTS i eclipse 4.5 nie mogę zmienić rozmiaru identyfikacji jest zawsze zablokowany i nie można go zmienić. To rozwiązało mój problem.
TekTimmy,

5

Przejdź do okna -> Preferencje i typ karty jako tekst wyszukiwania (który wyświetli okno dialogowe jak poniżej):

wprowadź opis zdjęcia tutaj

Przejdź do podświetlonych sekcji, aby zmienić zasady dotyczące kart. W ustawieniach edytora jest to głównie wcięcie za pomocą spacji (również pokazane powyżej).

W przypadku ustawień Formatera musisz edytować aktywny profil i zaktualizować zasady dotyczące kart (dostępne w ` Wcięcie -> Ustawienia ogólne :

wprowadź opis zdjęcia tutaj


3

Window-> Preferencje-> Java-> Styl kodu-> Formatter-> Edycja-> Wcięcie = „Tylko spacje”


3

W Eclipse przejdź do okna » Preferencje, a następnie wyszukaj Formater .

Zobaczysz różne pogrubione linki, kliknij każdy pogrubiony link i ustaw go na use spaceszamiasttabs .

W łączu formatera Java należy edytować profil i wybrać zasady dotyczące kart na karcie spaces onlywcięcia


2

Nie przegap zasady Tab dla obu * Tylko spacji * Użyj spacji, aby wciąć zawinięte linie

Sprawdziłem tylko tę ostatnią rzecz i zostawiłem Combobox jako Tabs Only, który ciągle nie działał CheckStyle .. Do waszej wiadomości mówię o Preferencjach> Java> Formatter> Edytuj ...


2

W formacie xml Eclipse:

Dla zakładki:

<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>

Dla miejsca:

<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>

0
  • Kliknij Okno »Preferencje
  • Rozwiń Java »Styl kodu
  • Kliknij Formatter
  • kliknij nowy
  • Wybierz nazwę profilu
  • Kliknij OK
  • Kliknij przycisk Edytuj
  • Kliknij kartę Wcięcie
  • W obszarze Ustawienia ogólne ustaw kartę Zasady na: Tylko spacje
  • Kliknij OK.


0

Jako uzupełnienie innych odpowiedzi, w Mac OS X, menu „Preferencje” znajduje się w Eclipse, a nie w Windows (w przeciwieństwie do dystrybucji Windows / Linux Eclipse). Wszystko inne jest nadal takie samo, jak wskazano w innych odpowiedziach powyżej tego punktu.

IE: Java Formatter dostępny pod:

Eclipse >      | # Not Window!
Preferences >  |
Java >         |
Code Style >   |
Formatter      |

Stąd edytuj formatyzator, a zasady dotyczące kart można ustawić w „Wcięciu”.


0

W środowisku Eclipse Mars (EE) w systemie Mac OS X jedynym sposobem na znalezienie tego w preferencjach było otwarcie okna dialogowego Preferencje i wpisanie Formatter, a następnie wybranie Java-> Style kodu-> Formatator.

Java-> Code Style nie ma dostępu do Formattera!


0

I nie zapomnij o edytorze ANT

Z jakiegoś powodu Ant Editor nie pojawia się w wynikach wyszukiwania dla 'tab'lub'spaces' tak można przegapić.

W obszarze Windows > Preferencje

  • Ant » Edytor » Formatyzator » Tab size: (ustawiony na 4)
  • Ant » Edytor » Formatator » Use tab character instead of spaces (odznacz)

0

Z pewnością możesz użyć pliku XML, aby skonfigurować formatyzator stylu kodowania. Plik formatyzatora pomaga zachować ten sam styl kodowania i wytyczne dla członków zespołu.

Dodanie poniższych zmiennych ustawiałoby a tab= 2 spacesi konwertowałoby na spację, nawet prawdopodobnie używasz Tabskrótu podczas kodowania za pomocą Eclipse .

<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>    
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="yes"/>

Najlepsza,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.