Jak automatycznie wciąć kod w edytorze Atom?

393

Jak automatycznie wcinasz swój kod w edytorze Atom? W innych edytorach zazwyczaj możesz wybrać kod i automatycznie go wciąć.

Czy jest też skrót klawiaturowy?

Anders
źródło

Odpowiedzi:

664

Znalazłem opcję w menu, w menu Edycja> Linie> Auto wcięcie. Wygląda na to, że nie ma przypisanej domyślnej mapy klawiszy.

Możesz spróbować dodać mapowanie klawiszy (Atom> Otwórz mapę klawiszy [w systemie Windows: Plik> Ustawienia> Wiązania klawiszy> „plik mapy klawiszy”] w następujący sposób:

'atom-text-editor':
  'cmd-alt-l': 'editor:auto-indent'

To zadziałało dla mnie :)


Dla Windowsa:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'
Nacho L.
źródło
1
Dziękuję Ci! Byłoby miło, gdyby wykonał rdzeń: wybierz wszystko wcześniej, ale nie mam pojęcia, jak to zrobić.
doobdargent
3
@doobdargent Stworzyłem pytanie z odpowiedzią na temat tego, jak skomponować dwa polecenia w nowe polecenie tutaj: stackoverflow.com/questions/24456995/…
Lee
15
Możesz także cmd + shift + pi szukaćEditor: Auto Indent
codingninja
1
Wymyśliłem sposób na powiązanie tego podejścia z „Wybierz wszystko” najpierw (a następnie przywróć oryginalny wybór po), abyś mógł to wszystko zrobić za jednym naciśnięciem klawisza - patrz moja odpowiedź poniżej. stackoverflow.com/a/33927654/398630
BrainSlugs83
4
W przypadku Ubuntu jest to [Edycja> Otwórz mapę klawiszy]. I podobnie jak ctrl-alt-ldomyślny skrót ubuntu do ekranu blokady, ctrl-shift-]na razie mapuję.
vusan
91

Akceptowana odpowiedź działa, ale za każdym razem musisz zrobić „Wybierz wszystko” - i jestem na to zbyt leniwy.

I okazuje się, że to nie jest bardzo trywialne - pomyślałem, że opublikuję to tutaj, próbując uratować podobnie myślących ludzi w ciągu 30 minut, aby to wszystko wyśledzić. - Pamiętaj również: to podejście przywraca pierwotny wybór, gdy jest zrobiony (i dzieje się tak szybko, że nawet nie zauważysz, że wybór został kiedykolwiek zmieniony).

1.) Najpierw dodaj niestandardowe polecenie do skryptu init (Plik-> Otwórz skrypt początkowy, a następnie wklej to na dole):

atom.commands.add 'atom-text-editor', 'custom:reformat', ->
    editor = atom.workspace.getActiveTextEditor();
    oldRanges = editor.getSelectedBufferRanges();
    editor.selectAll();
    atom.commands.dispatch(atom.views.getView(editor), 'editor:auto-indent')
    editor.setSelectedBufferRanges(oldRanges);

2.) Powiąż „niestandardowe: sformatuj” z kluczem (Plik-> Otwórz mapę klawiszy, a następnie wklej to na dole):

'atom-text-editor':
    'ctrl-alt-d': 'custom:reformat'

3.) Uruchom ponownie Atom (skrypt init.coffee działa tylko przy pierwszym uruchomieniu atomu).

BrainSlugs83
źródło
Ciekawy. Nie jestem jednak pewien, czy chciałbym, aby wszystko automatycznie wcinało. Wbudowane pozwala na wcięcie zaznaczenia. Można argumentować, że właściwe wcięcie jest zawsze czymś, co należy mieć.
Zelphir Kaltstahl,
2
@ Zelphir Zazwyczaj mam jedno skrót klawiszowy do wyboru wcięcia, a drugi skrót klawiszowy do wcięcia wszystkich. - Nie używam wcięć tak często, ale miło jest mieć to, kiedy jest potrzebne.
BrainSlugs83,
@ BrainSlugs83 Może trochę offtopic: Zauważyłem, że występuje problem przy próbie automatycznego wcięcia języków, które nie używają nawiasów klamrowych do oznaczania bloków kodu i pozwalają definiować funkcje lub klasy w innych. W takich przypadkach redaktor nie może wiedzieć, jaki jest poziom.
Zelphir Kaltstahl
2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowdodanie tego warunku do editor.selectAll();nadal pozwoli na wcięcie tylko zaznaczenia. Jeśli nie ma zaznaczenia, wcina cały plik.
manish_s
1
Jeśli chcesz mieć jeden krok cofania dla całego polecenia, dodaj to po zdefiniowaniu edytora: checkpoint = editor.createCheckpoint();i to na końcu:editor.groupChangesSinceCheckpoint(checkpoint);
Dan
43

Auto-wcięcie pakietu istnieje, aby zastosować automatyczne wcięcie do całego pliku za pomocą tych skrótów :

ctrl+ shift+i

lub

cmd+ shift+i

URL pakietu: https://atom.io/packages/auto-indent

fhcoso
źródło
Myślę, że potrzebuje aktualizacji - nie działa dla mnie. Używanie przestarzałych wywołań interfejsu API
Dean_Wilson
1
Zamiast tego pobrałem i zainstalowałem ręcznie z github.com/griiin/atom-auto-indent i teraz wydaje się działać ...
Dean_Wilson
Uwaga: domyślnie używa 1 wcięcia tabulatorów: /
dowcipnisia króla
24

Wolę używać atom-beautify, CTRL+ ALT+ B(w systemie Linux, może być także w systemie Windows) obsługuje lepsze wszystkie rodzaje formatów i można go również dostosować do formatu pliku.

więcej szczegółów tutaj: https://atom.io/packages/atom-beautify

ungalcrys
źródło
Z gałązką dodaje miejsca na pathfunkcję, więc nie można znaleźć trasy
Rodolfo Velasco
Myślę, że to najprostsze i czystsze rozwiązanie. Dzięki.
Alessandro,
17

Możesz po prostu szybko otworzyć paletę poleceń i zrobić to tam
Cmd + Shift + pi wyszukać Editor: Auto Indent:

zrzut ekranu

codingninja
źródło
10
To nie jest szybkie, jeśli jesteś zaawansowanym użytkownikiem :)
Jad Joubran
5

To działa dla mnie:

'atom-workspace atom-text-editor':
    'ctrl-alt-a': 'editor:auto-indent'

Najpierw musisz zaznaczyć wszystko za pomocą ctrl-a .

Dave Doe
źródło
2

Jeśli masz kłopoty z skrótów, spróbuj otworzyć Key Binding Resolver Windowsię Cmd + .. Pokażą ci klawisze, które naciskasz w czasie rzeczywistym.

Na przykład Cmd + Shift + 'tak naprawdę jestCmd + "

Dmitriy
źródło
2

W systemie Linux

(testowane w Ununtu KDE)

Istnieje opcja w menu, w menu Edycja> Linie> Auto wcięcie lub naciśnij Cmd + Shift + p, wyszukaj Editor: Auto Indent, wpisując po prostu „ai”

Uwaga: W KDE ctrl-alt-ljest już globalnie ustawiony „ekran blokady”, więc lepiej go użyć ctrl-alt-i.

Możesz dodać mapowanie klucza w Atom:

  • Cmd + Shift + p, wyszukaj „Widok ustawień: Pokaż skróty klawiszowe”
  • kliknij „plik mapy klawiszy”
  • Dodaj dział taki jak ten:

     'atom-text-editor':
        'ctrl-alt-i': 'editor:auto-indent'
    

Jeśli wcięcie nie działa, przyczyną może być to, że zakończenie pliku nie jest rozpoznawane przez Atom. Dodaj obsługę swojego języka, na przykład dla „Lua” zainstaluj pakiet „language-lua”.

Jeśli plik nie zostanie rozpoznany dla twojego języka:

  • otwórz ~/.atom/config.csonplik (CTRL + SHIFT + p: wpisz `` open config '')
  • dodaj / edytuj customFileTypessekcję corena przykład w następujący sposób:

    core:
      customFileTypes:
        "source.lua": [
          "conf"
        ]
        "text.html.php": [
          "thtml"
        ]
    

(Nazwy zakresów językowych („source.lua”, „text.html.php” ...) w ustawieniach pakietu językowego patrz tutaj )

rubo77
źródło
0

Możesz także spróbować dodać mapowanie klucza, które automatycznie zaznacza cały kod w pliku i wcina:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'
Hristian Yordanov
źródło
@IB Spróbuj z „atom-text-editor”: „ctrl-alt-l”: „editor: auto-indent” Przed naciśnięciem skrótu zaznacz cały tekst w pliku.
Hristian Yordanov,
0

Pracowałem nad jakimś świetnym kodem, który nie zapisuje się automatycznie podczas zapisywania. To, co zrobiłem, to kliknięcie prawym przyciskiem myszy w okienku kodu, a następnie wybranie ESLint Fix. To naprawiło moje wcięcia.

wprowadź opis zdjęcia tutaj

Jeff Lowery
źródło