Jak sprawić, by program formatujący zawijał kod za pomocą IntelliJ?

137

Nie mogę sformatować swojego kodu w IntelliJ.

Widzę linię marginesu (domyślnie 120 kolumn), ale wygląda na to, że aktywacja z menu:

Kod -> Sformatuj ponownie kod

po prostu ignoruje ten margines.

Jeroen Rosenberg
źródło

Odpowiedzi:

92

Czy masz na myśli to, że formater nie łamie długich linii? Sprawdź Ustawienia / Ustawienia projektu / Styl kodu / Zawijanie.

Aktualizacja: w późniejszych wersjach IntelliJ opcja znajduje się w obszarze Ustawienia / Edytor / Styl kodu. I wybierz Wrap when typing reaches right margin.

Péter Török
źródło
1
tej opcji już nie ma, używam wersji 13.0.2 i problem pozostaje ...
ipolevoy
34
@ipolevoy nazwa opcji to „Upewnij się, że prawy margines nie jest przekroczony”
szalony
13
Opcja „Upewnij się, że prawy margines nie jest przekroczona” znajduje się w Plik / Ustawienia / Edytor / Styl kodu / Java / Opakowania i nawiasy klamrowe / Zachowaj podczas ponownego formatowania
Aaron
1
ci faceci cały czas zmieniają nazwy klawiszy ustawień
ACV
To prawda, ale w nowych wersjach dodano dodatkowe opcje, aby zapewnić lepszą kontrolę nad tym, co można opakować. Zobacz stackoverflow.com/a/52157389/1104581, aby uzyskać poprawną aktualną odpowiedź.
ipetrik
163

IntelliJ IDEA 14, 15, 2016 i 2017

Sformatuj istniejący kod

  1. Upewnij się, że nie został przekroczony prawy margines

    Plik> Ustawienia> Edytor> Styl kodu> Java> Zawijanie i nawiasy klamrowe> Upewnij się, że prawy margines nie jest przekroczony

    Ustawienia plików Zapewnij właściwy margines

  2. Sformatuj ponownie kod

    Kod> Sformatuj ponownie kod ...

    Sformatuj ponownie kod

    lub naciśnij Ctrl+ Alt+L

    ostrzeżenie Jeśli masz coś takiego:

    thisLineIsVeryLongAndWillBeChanged();   // comment
    

    zostanie przekonwertowany na

    thisLineIsVeryLongAndWillBeChanged();   
    // comment  
    

    zamiast

    // comment  
    thisLineIsVeryLongAndWillBeChanged();   
    

    Dlatego wybieram fragmenty kodu przed ponownym formatowaniem, jeśli kod wygląda tak, jak w poprzednim przykładzie.

Zawijaj, gdy wpisywanie osiągnie prawy margines

  • IntelliJ IDEA 14 : Plik> Ustawienia> Edytor> Styl kodu> Zawijaj, gdy wpisywanie osiągnie prawy margines

    Zawijaj podczas pisania

  • IntelliJ IDEA 15, 2016 i 2017 : Plik> Ustawienia> Edytor> Styl kodu> Zawijaj podczas pisania

    Zawijaj podczas pisania

ROMANIA_engineer
źródło
5
Tak! To jest właściwa odpowiedź, bardzo dziękuję! Chodzi o to, że Wrap when typing reaches right marginbędzie miał ogromne kłopoty, gdy zmienisz coś w linii, która została już zapakowana. Twoja odpowiedź oczyszcza się po wezwaniu. W połączeniu z makrem „zapisz i sformatuj” to czyste złoto!
avalancha
1
Chciałbym tutaj dodać jedno słowo kluczowe, którego można szukać: tak nazywa się twardy wrap (w przeciwieństwie do miękkiego wrapa - zobacz różnicę tutaj ).
iled
1
Czy istnieje sposób, aby mieć poprawną liczbę wierszy, zamiast po prostu zapewnić, że nie przekracza maksymalnej? Np .: Wpisuję długą linię, dzieli ją na dwie linie, a następnie usuwam coś w pierwszej linii i łączy dwie linie z powrotem w jedną linię.
user2259659
1
Ponadto: Brak wskazówek na 2018.1
8bitjunkie
1
2017 „Zawijaj podczas pisania” nie działa. tekst nadal przekracza linię i nic się nie dzieje po
ponownym
17

Włączenie „Upewnij się, że prawy margines nie jest przekroczony” nie działa dla mnie w Intellij IDEA 2018.2. Znalazłem obejście, musimy zmienić wszystkie poniższe elementy z „Nie zawijaj” na „Zawijaj, jeśli długie”.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Następnie możemy podejrzeć, jaki rodzaj owinięcia zostanie zmieniony, patrząc w prawy panel. Jeśli jesteśmy zadowoleni, kliknij „OK” lub „Zastosuj”, aby zastosować zmiany. Wreszcie potrzebujemy ręcznego formatu, używając CTRL+ ALT+ Lw Windows i Command+ Shift+ Lw MacOS.

guo
źródło
To też był problem dla mnie. Jeśli to pole wyboru jest zaznaczone, ale reszta jest domyślnie ustawiona, IntelliJ próbuje zawijać wiersze, ale nie może, ponieważ wszystko jest ustawione na „Nie zawijaj”.
Robber
12

Możesz też użyć skrótu:

Ctrl + Alt + L

Eslam Hamouda
źródło
4
Czy możesz opublikować nazwę tej akcji (Ustawienia -> Mapa klawiszy)? W większości systemów Linux do blokowania komputera używana jest kombinacja CTRL + ALT + L. Nie mogę nawet użyć funkcji „Znajdź działanie za pomocą skrótu”.
tomrozb
2
@tomrozb ten skrót dotyczy kodu -> przeformatuj kod.
AtomHeartFather
1
To blokuje mój ekran.
8bitjunkie
4

Aby zawinąć tekst w edytorze kodu w społeczności IntelliJ IDEA 2020.1, wykonaj następujące kroki:

Ctrl + Shift + "A" OR Help -> Find Action
Enter: "wrap" into the text box
Toggle: View | Active Editor Soft-Wrap "ON"

wprowadź opis obrazu tutaj

Noah PG
źródło
3

Możesz utworzyć makro dla Ctrl + Shift + S (na przykład), które robi to wszystko:

Edycja> Makra> Rozpocznij nagrywanie makr (rozpocznie się nagrywanie). Kliknij, gdzie potrzebujesz.

Na przykład:

Code > Reformat Code
Code > Auto-Indent Lines
Code > Optimize Imports
Code > Rearrange Code
File > Save All
... (all that you want)

Następnie kliknij czerwony przycisk w prawym dolnym rogu IDE, aby zatrzymać nagrywanie makra.

Ustaw nazwę makra.

Przejdź do Plik> Ustawienia> Makra> TWOJA NAZWA MAKRA .

Kliknij prawym przyciskiem myszy> Dodaj skrót klawiaturowy i naciśnij Ctrl + Shift + S.

user3006181
źródło
To jest podstawowa funkcja IDE. Makra są OTT i są zbyt skomplikowane na coś tak prostego.
8bitjunkie
2

W najnowszej wersji Intellij 2020 mamy opcję o nazwie soft-wrap te pliki. Ustawienia -> Edytor -> Ogólne -> miękkie zawijanie tych plików. Zaznacz tę opcję i dodaj typ plików, które chcesz zawinąć.

opcja soft wrap intellij

k sarath
źródło