¿Cómo sangrar automáticamente el código en el editor Atom?

393

¿Cómo sangras automáticamente tu código en el editor Atom? En otros editores, generalmente puede seleccionar algún código y aplicarle una sangría automática.

¿Hay un atajo de teclado también?

Anders
fuente

Respuestas:

664

Encontré la opción en el menú, en Edición> Líneas> Sangría automática. No parece tener un mapa de teclas predeterminado vinculado.

Puede intentar agregar una asignación de teclas (Atom> Abrir su mapa de teclas [en Windows: Archivo> Configuración> Asignaciones de teclas> "su archivo de mapa de teclas"]) como este:

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

Funcionó para mí :)


Para ventanas:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'
Nacho L.
fuente
1
¡Gracias! Sería bueno si hiciera un núcleo: select-all bien antes, pero no tengo idea de cómo escribir eso.
doobdargent
3
@doobdargent Creé una pregunta con una respuesta sobre cómo componer dos comandos en un nuevo comando aquí: stackoverflow.com/questions/24456995/…
Lee
15
También puede cmd + shift + py buscarEditor: Auto Indent
codingninja
1
Descubrí una forma de vincular este enfoque con "Seleccionar todo" primero (y luego restaurar la selección original después), para que pueda hacerlo todo con solo presionar una tecla. Vea mi respuesta a continuación. stackoverflow.com/a/33927654/398630
BrainSlugs83
44
Para ubuntu, es [Editar> Abrir su mapa de teclas]. Y como ctrl-alt-les el acceso directo predeterminado de ubuntu para la pantalla de bloqueo, estoy mapeando ctrl-shift-]por ahora.
vusan
91

La respuesta aceptada funciona, pero primero debe hacer un "Seleccionar todo", cada vez, y soy demasiado vago para eso.

Y resulta que no es súper trivial: pensé que publicaría esto aquí en un intento por salvar a personas de ideas afines los 30 minutos que se necesitan para rastrear todo esto. - También tenga en cuenta: este enfoque restaura la selección original cuando se hace (y sucede tan rápido que ni siquiera se da cuenta de que la selección alguna vez se modificó).

1.) Primero, agregue un comando personalizado a su script de inicio (Archivo-> Abra su script de inicio, luego péguelo en la parte inferior):

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.) Enlace "personalizado: reformatear" a una clave (Archivo-> Abra su mapa de teclas, luego péguelo en la parte inferior):

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

3.) Reinicie Atom (el script init.coffee solo se ejecuta cuando atom se inicia por primera vez).

BrainSlugs83
fuente
Interesante. Sin embargo, no estoy seguro de querer que sangrará automáticamente todo. El incorporado permite sangrar la selección. Se podría argumentar que una sangría adecuada siempre es algo que se debe tener.
Zelphir Kaltstahl
2
@Zelphir Normalmente tengo una combinación de teclas para la selección de sangría, y otra combinación de teclas para sangrar todo. - No uso sangría con tanta frecuencia, pero es bueno tenerlo cuando lo necesitas.
BrainSlugs83
@ BrainSlugs83 Tal vez un poco fuera de tema: me he dado cuenta de que hay un problema al tratar de sangrar automáticamente los lenguajes, que no usan llaves para marcar bloques de código y permiten definir funciones o clases dentro de otros. El editor no puede saber en qué nivel está en esos casos.
Zelphir Kaltstahl
2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowagregar esta condición editor.selectAll();todavía permitirá sangrar solo la selección. Si no hay selección, sangrará todo el archivo.
manish_s
1
Si desea tener un solo paso de deshacer para todo el comando, agregue esto después de definir el editor: checkpoint = editor.createCheckpoint();y esto al final:editor.groupChangesSinceCheckpoint(checkpoint);
Dan
43

La sangría automática del paquete existe para aplicar la sangría automática a todo el archivo con estos accesos directos :

ctrl+ shift+i

o

cmd+ shift+i

URL del paquete: https://atom.io/packages/auto-indent

fhcoso
fuente
necesita una actualización, creo, no funciona para mí. Uso de llamadas en desuso a la API
Dean_Wilson
1
En su lugar, descargué e instalé manualmente desde github.com/griiin/atom-auto-indent y ahora parece funcionar ...
Dean_Wilson
Nota: utiliza 1 sangría de tabulación por defecto: /
King's jester
24

Prefiero usar atom-beautify, CTRL+ ALT+ B(en Linux, también puede estar en Windows) maneja mejor todo tipo de formatos y también es personalizable por formato de archivo.

Más detalles aquí: https://atom.io/packages/atom-beautify

ungalcrys
fuente
Con ramita agrega un espacio para la pathfunción, por lo que no se pudo encontrar la ruta
Rodolfo Velasco
Creo que esta es la solución más simple y limpia. Gracias.
Alessandro
17

Puede abrir rápidamente la paleta de comandos y hacerlo allí
Cmd + Shift + py buscar Editor: Auto Indent:

captura de pantalla

codingninja
fuente
10
Eso no es rápido si eres un usuario avanzado :)
Jad Joubran
5

Esto funciona para mi:

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

Tienes que seleccionar todo con ctrl-a primero.

Dave Doe
fuente
2

Si tiene problemas con las teclas de acceso rápido, intente abrir Key Binding Resolver Windowcon Cmd + .. Le mostrará las teclas que está presionando en tiempo real.

Por ejemplo, Cmd + Shift + 'es en realidadCmd + "

Dmitriy
fuente
2

En Linux

(probado en Ununtu KDE)

Existe la opción en el menú, en Edición> Líneas> Sangría automática o presione Cmd + Shift + p, busque Editor: Auto Indentsimplemente ingresando "ai"

Nota: En KDE ctrl-alt-lya está configurado globalmente para "pantalla de bloqueo", por lo que es mejor usarlo ctrl-alt-i.

Puede agregar una asignación de teclas en Atom:

  • Cmd + Shift + p, busque "Vista de configuración: Mostrar combinaciones de teclas"
  • haga clic en "su archivo de mapa de teclas"
  • Agregue una sección como esta:

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

Si la sangría no funciona, puede ser un motivo que Atom no reconozca el final del archivo. Agregue el soporte para su idioma y, por ejemplo, para "Lua" instale el paquete "language-lua".

Si no se reconoce un archivo para su idioma:

  • abra el ~/.atom/config.csonarchivo (por CTRL + MAYÚS + p: escriba `` configuración abierta '')
  • agregue / edite una customFileTypessección en, corepor ejemplo, como la siguiente:

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

(Puede encontrar los nombres de alcance de idiomas ("source.lua", "text.html.php" ...) en la configuración del paquete de idiomas, consulte aquí )

rubo77
fuente
0

También podría intentar agregar un mapeo de teclas que seleccione automáticamente todo el código en el archivo e sangrarlo:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'
Hristian Yordanov
fuente
@IB Pruebe con 'atom-text-editor': 'ctrl-alt-l': 'editor: auto-indent' Antes de presionar el acceso directo, seleccione todo el texto del archivo.
Hristian Yordanov
0

Estaba trabajando en un código maravilloso, que no se formatea automáticamente al guardar. Lo que hice fue hacer clic derecho en el panel de código, luego elegí ESLint Fix. Eso arregló mis sangrías.

ingrese la descripción de la imagen aquí

Jeff Lowery
fuente