Jak sformatować wszystkie pliki w projekcie Visual Studio Code?

86

Czy istnieje sposób na sformatowanie wszystkich plików w projekcie bez formatowania każdego z nich osobno?

Chris Williams
źródło

Odpowiedzi:

80

Możesz użyć rozszerzenia o nazwie „Formatuj pliki”.

”Użyj: Otwórz paletę poleceń (Ctrl + Shift + P) i wprowadź„ Formatuj pliki ”Utwórz powiązanie klawiszy z poleceniem„ editor.action.formatFiles ”. Kliknij prawym przyciskiem myszy folder obszaru roboczego i wybierz „Formatuj pliki”, aby sformatować wszystkie pliki w katalogu. ”

Źródło: https://marketplace.visualstudio.com/items?itemName=jbockle.jbockle-format-files

Stellan Lindell
źródło
W połowie drogi powiedział „ An error occurred while running Format Files: Invalid count value
Aaron Franke
1
Działa jak urok
Dheeraj M Pai
1
To spowodowało uszkodzenie wszystkich moich plików, ponieważ nie używa ładniejszego. Łamie kod JSX PROSZĘ O MIŁOŚĆ DO WSZYSTKIEGO, CO DOBRE, NIGDY NIE RÓB TO! Będziesz tego żałować.
jake_314
1
@ jake_314: Przepraszam, że miałeś z tym takie złe doświadczenia. Ale mam nadzieję, że używasz Git lub wykonałeś kopię zapasową swojego kodu przed wykonaniem głównych operacji zmiany kodu skryptowego? W każdym razie nie próbowałem tego z JSX, ale tutaj jest link, który może być pomocny: rockyourcode.com/…
Stellan Lindell
37

To działa dla mnie

Zainstaluj ładniej:

npm init 
npm i prettier

Dodaj następujący skrypt w package.json:

"pretty": "prettier --write \"./**/*.{js,jsx,json}\"" 

Tylko w tym przypadku muszę sformatować moje pliki .js .jsx i .json.

Uruchom skrypt:

npm run pretty
Hiếu Thái Ngọc
źródło
3
Prawdopodobnie chcesz dodać „--save-dev” do KMP polecenia instalacji, nie muszą to jako zależność produkcji
reggaeguitar
3
Sugeruje się, że pytanie dotyczy javascript. Nie widzę żadnych powiązanych z nim tagów.
Emobe
2
Czy ładniejszy format c/ c++/ c#kod? Nie - głos przeciw
Herrgott
Możesz również użyć, eslint --fixjeśli używasz zarówno eslint, jak i ładniejszego.
BeyondTheSea
Zgadzam się, że tę odpowiedź należy zlekceważyć. W tym czasie szukałem odpowiedzi na to pytanie, pracowałem głównie z kodem js / jsx / json
Hiếu Thái Ngọc
6

Najprostsze rozwiązanie jakie znalazłem jest jak poniżej.

  • Zainstaluj ładniej w vscode.
  • Utwórz plik .prettierrc i skonfiguruj go tak, jak chcesz.
  • Uruchom następujące polecenie w konsoli vscode.

npx prettier --write "**/*.ts" (Dodaj wyrażenie regularne typu pliku zgodnie z potrzebą)

Piyush Balapure
źródło
1

Jak powiedział @herrbischoff, obecnie nie ma możliwości sformatowania wszystkich plików w projekcie.
Jednak byłaby to przydatna funkcja.

To, co może zrobić, to sformatować wszystkie niezapisane pliki, włączając automatyczne zapisywanie i automatyczne formatowanie.

W przeciwnym razie potrzebowałbyś skryptu powłoki, rozszerzenia lub innego programu zewnętrznego (np. Programu sprawdzającego tslint, który może automatycznie korygować błędy), który jest w stanie to zrobić.

Sam miałem z tym problemy i ręczne otwieranie wszystkich plików jest do bani


źródło
0

Obecnie nie ma sposobu, aby to zrobić, ani nie brzmi to jak szczególnie przydatna funkcja. Albo inaczej: byłaby to użyteczna funkcja, gdybyś mógł jej całkowicie zaufać, czego nie możesz.

Musiałbyś włożyć dużo wiary w logikę automatycznego formatowania używanych języków, aby nie zepsuć i nie wprowadzić błędów. Mimo wszystko trzeba by ręcznie przejrzeć zmiany, więc takie podejście nie powinno skutkować mierzalnym wzrostem produktywności.

Jeśli pracujesz z poważnie rozbudowaną bazą kodu i nie przejmujesz się możliwymi problemami, sugerowałbym uruchomienie prostego polecenia powłoki z programem formatującym CLI odpowiednich języków. Przykład kodu w C ++ przy użyciu formatu clang :

find . -iname *.cpp -exec clang-format {} +

To polecenie znajdzie rekursywnie wszystkie pliki cpp i uruchomi je przez program formatujący z domyślnymi ustawieniami.

Proces jest zasadniczo taki sam dla każdego języka, na przykład JavaScript (z js-beautify ):

find . -iname *.js -exec js-beautify {} +

Tylko pamiętaj, aby przejrzeć wszystko, co wyjdzie. Ponadto może być bardzo możliwe skryptowanie tego polecenia w VScode - lub po prostu uruchomienie go we wbudowanym terminalu.

herrbischoff
źródło
19
Jak nie byłaby to użyteczna funkcja; jeśli zmienisz regułę formatowania, lepiej zastosować ją do wszystkich plików za jednym razem, zamiast mieszać zmiany formatowania z innymi zmianami kodu.
slikts
1
To raczej oczywiste: ponieważ może być niebezpieczne. Każde automatyczne formatowanie zastosowane do wszystkich plików, zwłaszcza projektów, których nie znasz dokładnie, może zepsuć więcej niż naprawić. Wystarczy pomyśleć o językach takich jak Python, w których znaczenie mają wcięcia. Niezaznaczone automatyczne formatowanie będzie złamać rzeczy. Oczywiście możesz się o tym przekonać na własnej skórze.
herrbischoff
2
Robię to od lat z Intellij i Resharper i nigdy nie miałem problemu. Naprawdę nie ma „trudnej drogi”, jeśli ufam formatowi na tyle, aby zrobić to automatycznie dla jednego pliku, na tyle ufam mu w przypadku wszystkich pozostałych. Polecam podejście polegające na jawnym wybraniu reguł domyślnych reguł IE i powolnym ich włączaniu.
Czterdzieści dwa
3
Zgodnie z tym argumentem formatowanie całego pliku byłoby zbyt niebezpieczne. Powinieneś mieć możliwość formatowania tylko bloku. Jeśli cały plik jest w porządku, co się stanie, jeśli wybiorę DWA pliki w tym samym katalogu? Jeśli wszystko jest w porządku, co jeśli wybiorę katalog? Istnieje wiele przypadków użycia (np. @Slikts), w których ma to sens, i wiele środowisk (w tym Python), w których reformatery / prettifiers / standaryzatory kodu działają dobrze.
Marvin
2
Wydaje się, że to dość uparta odpowiedź. Często zdarza się natknąć się na bazę kodu (inną niż Python) z mnóstwem błędów indendtacji. Domyślną akcją jest sformatowanie pliku przy użyciu bieżących reguł, upewnienie się, że kompilacja projektu, testy przeszły pomyślnie, a następnie przejrzenie pliku w git (prawdopodobnie ignorując białe znaki). Subskrybowałbym metodę, która pozwala mi to zrobić z projektem, a nie pojedynczymi plikami.
lorengphd