Generator .editorconfig
Ustal wspólne reguły wcięć, kodowania i końca linii dla całego repozytorium.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator .editorconfig — jedne reguły wcięć dla całego zespołu
Generator .editorconfig składa gotowy plik konfiguracyjny z siedmiu decyzji: spacje czy tabulatory, szerokość wcięcia, kodowanie, znak końca linii, pusty wiersz na końcu pliku, obcinanie białych znaków i wyjątek dla Markdown. Wynik kopiujesz do katalogu głównego repozytorium i od tej pory edytory całego zespołu formatują kod tak samo, niezależnie od prywatnych ustawień.
Czym jest .editorconfig i dlaczego działa
.editorconfig to plik tekstowy w formacie INI, który opisuje reguły formatowania per wzorzec nazwy pliku. Nie jest narzędziem uruchamianym w terminalu ani zależnością projektu — to konfiguracja, którą czyta sam edytor. Ponieważ plik jest wersjonowany razem z kodem, nowa osoba w projekcie dostaje właściwe wcięcia po pierwszym git clone. Ważny jest wpis root = true na początku: bez niego edytor szuka dalej w katalogach nadrzędnych i może dociągnąć reguły z innego projektu. Generator zawsze dopisuje ten wiersz.
Które reguły ustawia generator
| Właściwość | Wartości | Co zmienia |
|---|---|---|
indent_style | space, tab | Spacje albo znak tabulacji |
indent_size | 1–12 | Liczba spacji w jednym wcięciu |
tab_width | 1–12 | Szerokość tabulatora |
charset | utf-8, utf-8-bom, latin1 | Kodowanie zapisu pliku |
end_of_line | lf, crlf, cr | Znak kończący wiersz |
insert_final_newline | true, false | Pusty wiersz na końcu pliku |
trim_trailing_whitespace | true, false | Obcinanie spacji na końcu wiersza |
Jak zbudować plik krok po kroku
- Wybierz kafelek Spacje albo Tabulatory. Przy tabulatorach generator zapisuje
tab_width, bo szerokość tabulatora to kwestia wyświetlania, a nie liczby znaków. - Podaj rozmiar wcięcia z zakresu od 1 do 12. Wartość poza zakresem zatrzymuje generowanie i pokazuje komunikat, zamiast po cichu podstawić coś innego.
- Ustaw kodowanie i znak końca linii. Domyślne
utf-8ilfto bezpieczny wybór dla projektów budowanych na Linuksie. - Zdecyduj o pustym wierszu na końcu pliku i o obcinaniu białych znaków. Oba przełączniki zapisują wprost
truelubfalse. - Kliknij Generuj .editorconfig, skopiuj wynik i zapisz jako
.editorconfigw katalogu głównym repozytorium.
Na starcie repozytorium warto dołożyć obok niego listę ignorowanych ścieżek z generatora .gitignore, a przy projektach na Apache konfigurację z generatora pliku .htaccess.
Węższe wcięcia dla plików frontendowych
Gdy wybierzesz spacje i rozmiar większy niż dwa, generator dopisuje sekcję dla plików js, jsx, ts, tsx, css, scss, json, yml, yaml i html z wcięciem dwóch spacji. Taka konwencja obowiązuje w ekosystemie JavaScriptu i w plikach danych o głębokich zagnieżdżeniach. Przy wcięciu jednej lub dwóch spacji sekcja nie powstaje, bo byłaby kopią reguły globalnej.
Pliki .php, .py, .go i .rs świadomie nie trafiają do tej listy: PSR-12, PEP 8 i rustfmt wymagają czterech spacji, a gofmt tabulatorów. Dziedziczą regułę z sekcji [*]. Jeden wyjątek generator narzuca zawsze: przy globalnych tabulatorach dla .yml i .yaml powstaje osobna sekcja ze spacjami, bo specyfikacja YAML zabrania tabulatorów jako wcięcia. Plik z tabulacjami nie sparsuje się — sprawdzisz to walidatorem YAML.
Koniec linii, Git i fałszywe zmiany w diffach
Windows kończy wiersz parą CR i LF, systemy uniksowe pojedynczym LF. Bez wspólnej reguły Git pokazuje cały plik jako zmieniony, choć nikt nie tknął logiki. Ustawienie end_of_line = lf rozwiązuje problem po stronie edytora, a uzupełnia je plik .gitattributes z wpisem * text=auto eol=lf, który normalizuje zawartość już w repozytorium. Jeżeli diff nadal wygląda podejrzanie, sprawdź go narzędziem do porównywania różnic w kodzie, a wcięcia w HTML lub CSS uporządkuj upiększaczem kodu JS, CSS i HTML.
Dlaczego Markdown wymaga wyjątku
W Markdownie dwie spacje na końcu wiersza oznaczają wymuszone złamanie linii. Edytor z włączonym trim_trailing_whitespace usuwa je przy każdym zapisie i cicho psuje formatowanie dokumentacji. Dlatego generator dopisuje sekcję wyłączającą tę regułę dla plików .md i .markdown:
[*.{md,markdown}]
trim_trailing_whitespace = false
Sekcja pojawia się tylko wtedy, gdy globalnie obcinasz białe znaki — inaczej byłaby wpisem bez efektu.
Najczęściej zadawane pytania
Czym .editorconfig różni się od Prettiera lub PHP CS Fixera?
EditorConfig działa w chwili pisania i zapisu pliku, ustawiając kilka właściwości edytora. Formatery takie jak Prettier, PHP CS Fixer czy Black przebudowują cały kod według własnych reguł i uruchamiasz je w terminalu albo w hooku. Nie wykluczają się: Prettier sam czyta .editorconfig i bierze z niego wcięcia oraz koniec linii, jeśli nie nadpisałeś ich we własnej konfiguracji.
Czy plik działa w każdym edytorze?
VS Code, IDE JetBrains i Visual Studio czytają go bez dodatków. Vim, Emacs, Sublime Text i Notepad++ wymagają wtyczki. Edytor, który nie rozumie pliku, po prostu go ignoruje — nic się nie psuje.
Mogę mieć kilka plików .editorconfig w jednym projekcie?
Tak. Edytor idzie od katalogu edytowanego pliku w górę drzewa i scala reguły, dopóki nie natrafi na plik z root = true. Reguły z katalogów bliższych plikowi mają pierwszeństwo. W monorepo pakiet frontendowy może więc trzymać dwie spacje, a usługa w Pythonie cztery.
Co robi utf-8-bom i kiedy go wybrać?
utf-8-bom zapisuje na początku pliku znacznik kolejności bajtów. Potrzebują go tylko starsze narzędzia z ekosystemu Windows, na przykład część skryptów PowerShell 5. W plikach PHP znacznik jest szkodliwy, bo trafia do odpowiedzi HTTP przed nagłówkami — bez konkretnego powodu zostaw utf-8.
Czy .editorconfig poprawi pliki, które już są w repozytorium?
Nie od razu. Reguły działają na plik w chwili edycji i zapisu, więc istniejący kod zmienia się stopniowo. Przeformatowanie całego projektu zrób osobnym formaterem i osobnym commitem, wpisanym potem do .git-blame-ignore-revs, żeby historia pozostała czytelna.