Comment auto-indenter du code dans l'éditeur Atom?

393

Comment indenter automatiquement votre code dans l'éditeur Atom? Dans d'autres éditeurs, vous pouvez généralement sélectionner du code et l'indenter automatiquement.

Existe-t-il également un raccourci clavier?

Anders
la source

Réponses:

664

J'ai trouvé l'option dans le menu, sous Edition> Lignes> Retrait automatique. Il ne semble pas avoir de clavier par défaut lié.

Vous pouvez essayer d'ajouter un mappage de clé (Atom> Ouvrir votre mappage de touches [sous Windows: Fichier> Paramètres> Liaisons de touches> "votre fichier de mappage de touches"]) comme celui-ci:

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

Ça a marché pour moi :)


Pour les fenêtres:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'
Nacho L.
la source
1
Je vous remercie! Ce serait bien s'il faisait un noyau: sélectionnez-tout juste avant, mais aucun indice sur la façon de l'écrire.
doobdargent
3
@doobdargent J'ai créé une question avec une réponse sur la façon de composer deux commandes dans une nouvelle commande ici: stackoverflow.com/questions/24456995/…
Lee
15
Vous pouvez également cmd + shift + prechercherEditor: Auto Indent
codingninja
1
J'ai trouvé un moyen de lier cette approche avec "Tout sélectionner" en premier (puis de restaurer la sélection d'origine après), afin que vous puissiez tout faire en une seule touche - voir ma réponse ci-dessous. stackoverflow.com/a/33927654/398630
BrainSlugs83
4
Pour ubuntu, son [Edit> Open Your Keymap]. Et comme ctrl-alt-lc'est le raccourci par défaut d'ubuntu pour l'écran de verrouillage, je mappe avec ctrl-shift-]pour l'instant.
vusan
91

La réponse acceptée fonctionne, mais vous devez d'abord faire "Tout sélectionner" - à chaque fois - et je suis trop paresseux pour ça.

Et il s'avère que ce n'est pas super trivial - je me suis dit que je publierais ceci ici dans le but de sauver les personnes partageant les mêmes idées les 30 minutes nécessaires pour retrouver tout cela. - Notez également: cette approche restaure la sélection d'origine lorsqu'elle est terminée (et cela se produit si rapidement que vous ne remarquez même pas que la sélection a été modifiée).

1.) Tout d'abord, ajoutez une commande personnalisée à votre script init (Fichier-> Ouvrez votre script init, puis collez-la en bas):

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.) Liez "custom: reformatage" à une clé (Fichier-> Ouvrez votre clavier, puis collez-le en bas):

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

3.) Redémarrez Atom (le script init.coffee ne s'exécute que lorsque Atom est lancé pour la première fois).

BrainSlugs83
la source
Intéressant. Je ne suis pas sûr que je voudrais qu'il indente automatiquement tout. La fonction intégrée permet de mettre en retrait la sélection. Vous pourriez faire valoir que l'indentation appropriée est toujours quelque chose qui devrait être fait.
Zelphir Kaltstahl
2
@Zelphir J'ai généralement un raccourci clavier pour la sélection du retrait et un autre raccourci clavier pour le retrait total. - Je n'utilise pas le retrait aussi souvent, mais c'est bien de l'avoir quand on en a besoin.
BrainSlugs83
@ BrainSlugs83 Peut-être un peu hors sujet: j'ai remarqué qu'il y a un problème lors de la tentative de mise en retrait automatique des langages, qui n'utilisent pas d'accolades pour marquer des blocs de code et permettent de définir des fonctions ou des classes au sein d'autres. L'éditeur ne peut pas savoir quel est le niveau dans ces cas.
Zelphir Kaltstahl
2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowl'ajout de cette condition à editor.selectAll();permettra toujours de ne mettre en retrait que la sélection. S'il n'y a pas de sélection, il indente l'intégralité du fichier.
manish_s
1
Si vous voulez avoir une seule étape d'annulation pour toute la commande, ajoutez ceci après avoir défini l'éditeur: checkpoint = editor.createCheckpoint();et ceci à la fin:editor.groupChangesSinceCheckpoint(checkpoint);
Dan
43

Le retrait automatique du package existe pour appliquer le retrait automatique à l' ensemble du fichier avec ces raccourcis :

ctrl+ shift+i

ou

cmd+ shift+i

URL du package: https://atom.io/packages/auto-indent

fhcoso
la source
a besoin d'une mise à jour je pense - ne fonctionne pas pour moi. Utilisation d'appels obsolètes à l'API
Dean_Wilson
1
Au lieu de cela, j'ai téléchargé et installé manuellement à partir de github.com/griiin/atom-auto-indent et semble maintenant fonctionner ...
Dean_Wilson
Remarque: il utilise 1 tabulation par défaut: /
King's jester
24

Je préfère utiliser atom-beautify, CTRL+ ALT+ B(sous Linux, peut-être aussi dans Windows) gère mieux tous les types de formats et il est également personnalisable par format de fichier.

plus de détails ici: https://atom.io/packages/atom-beautify

ungalcrys
la source
Avec une brindille, il ajoute un espace pour la pathfonction afin que l'itinéraire ne puisse être trouvé
Rodolfo Velasco
Je pense que c'est la solution la plus simple et la plus propre. Merci.
Alessandro
17

Vous pouvez simplement ouvrir rapidement la palette de commandes et le faire là
Cmd + Shift + p- bas et rechercher Editor: Auto Indent:

capture d'écran

codingninja
la source
10
Ce n'est pas rapide si vous êtes un utilisateur expérimenté :)
Jad Joubran
5

Cela fonctionne pour moi:

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

Vous devez tout d'abord sélectionner avec ctrl-a .

dave doe
la source
2

Si vous rencontrez des problèmes avec les raccourcis clavier, essayez d'ouvrir Key Binding Resolver Windowavec Cmd + .. Il vous montrera les touches sur lesquelles vous appuyez en temps réel.

Par exemple, Cmd + Shift + 'est en faitCmd + "

Dmitriy
la source
2

Sous Linux

(testé dans Ununtu KDE)

Il y a l'option dans le menu, sous Edition> Lignes> Retrait automatique ou appuyez sur Cmd + Shift + p, recherchezEditor: Auto Indent en entrant simplement "ai"

Remarque: Dans KDE ctrl-alt-lest déjà défini globalement pour "écran de verrouillage" donc une meilleure utilisationctrl-alt-i place.

Vous pouvez ajouter un mappage de clés dans Atom:

  • Cmd + Shift + p, recherchez "Affichage des paramètres: Afficher les raccourcis clavier"
  • cliquez sur "votre fichier keymap"
  • Ajoutez-y une section comme celle-ci:

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

Si l'indentation ne fonctionne pas, cela peut être dû au fait que la fin du fichier n'est pas reconnue par Atom. Ajoutez ensuite le support de votre langue, par exemple pour "Lua" installez le package "language-lua".

Si un fichier n'est pas reconnu pour votre langue:

  • ouvrir le ~/.atom/config.csonfichier (par CTRL + SHIFT + p: taper `` open config '')
  • ajouter / modifier une customFileTypessection sous corepar exemple comme suit:

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

(Vous trouverez les noms de portée des langues ("source.lua", "text.html.php" ...) dans les paramètres du package de langue, voir ici )

rubo77
la source
0

Vous pouvez également essayer d'ajouter un mappage de clé avec la sélection automatique de tout le code dans le fichier et le mettre en retrait:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'
Hristian Yordanov
la source
@IB Essayez avec 'atom-text-editor': 'ctrl-alt-l': 'editor: auto-indent' Avant d'appuyer sur le raccourci, sélectionnez tout le texte du fichier.
Hristian Yordanov
0

Je travaillais sur du code groovy, qui ne se formate pas automatiquement lors de la sauvegarde. J'ai fait un clic droit sur le volet de code, puis choisi ESLint Fix. Cela a fixé mes retraits.

entrez la description de l'image ici

Jeff Lowery
la source