Como recuar automaticamente o código no editor Atom?

393

Como você recua automaticamente seu código no editor Atom? Em outros editores, geralmente você pode selecionar algum código e recuá-lo automaticamente.

Existe um atalho de teclado também?

Anders
fonte

Respostas:

664

Encontrei a opção no menu, em Editar> Linhas> Recuo automático. Parece não ter um mapa de teclas padrão vinculado.

Você pode tentar adicionar um mapeamento de chave (Atom> Abra o seu Keymap [no Windows: Arquivo> Configurações> Keybindings> "your keymap file]]) como este:

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

Funcionou para mim :)


Para Windows:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'
Nacho L.
fonte
11
Obrigado! Seria bom se ele fizesse um núcleo: selecione tudo certo antes, mas nenhuma pista sobre como fazer isso.
Doobdargent
3
@doobdargent eu criei uma pergunta com uma resposta sobre como compor dois comandos em um novo comando aqui: stackoverflow.com/questions/24456995/...
Lee
15
Você também pode cmd + shift + pprocurar eEditor: Auto Indent
codingninja 1/15
11
Eu descobri uma maneira de vincular essa abordagem com "Selecionar tudo" primeiro (e depois restaurar a seleção original depois), para que você possa fazer tudo com um toque de tecla - veja minha resposta abaixo. stackoverflow.com/a/33927654/398630
BrainSlugs83
4
Para o ubuntu, é [Edit> Open Your Keymap]. E como ctrl-alt-lé o atalho padrão do ubuntu para a tela de bloqueio, estou mapeando ctrl-shift-]por enquanto.
vusan
91

A resposta aceita funciona, mas você precisa fazer um "Selecionar tudo" primeiro - sempre - e sou muito preguiçoso para isso.

E, ao que parece, não é super trivial - imaginei que eu postaria isso aqui na tentativa de salvar indivíduos com ideias semelhantes aos 30 minutos necessários para rastrear tudo isso. - Observe também: essa abordagem restaura a seleção original quando é concluída (e acontece tão rápido que você nem percebe que a seleção foi alterada).

1.) Primeiro, adicione um comando personalizado ao seu script init (Arquivo-> Abra o seu Script Inicial, depois cole-o na 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.) Vincule "custom: reformat" a uma chave (Arquivo-> Abra o seu Keymap, cole-o na parte inferior):

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

3.) Reinicie o Atom (o script init.coffee é executado apenas quando o atom é iniciado pela primeira vez).

BrainSlugs83
fonte
Interessante. Não tenho certeza se gostaria que ele recuasse automaticamente tudo. O built-in permite recuar a seleção. Você poderia argumentar que o recuo adequado é sempre algo que deve ser obtido.
Zelphir Kaltstahl
2
@ Zelphir Normalmente, tenho uma combinação de teclas para seleção de recuo e outra combinação de teclas para recuar tudo. - Não uso recuo com tanta frequência, mas é bom tê-lo quando você precisar.
BrainSlugs83
@ BrainSlugs83 Talvez um pouco offtopic: notei que há um problema ao tentar indentar automaticamente linguagens, que não usam chaves para marcar blocos de código e permitem definir funções ou classes dentro de outras. O editor não pode saber em que nível nesses casos.
Zelphir Kaltstahl
2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowadicionar essa condição a editor.selectAll();ainda permitirá recuar apenas a seleção. Se não houver seleção, ele recuará o arquivo inteiro.
Manish_s 25/16
11
Se você deseja ter uma única etapa de desfazer para todo o comando, adicione-o após a definição do editor: checkpoint = editor.createCheckpoint();e no final:editor.groupChangesSinceCheckpoint(checkpoint);
Dan
43

O avanço automático do pacote existe para aplicar o avanço automático ao arquivo inteiro com estes atalhos :

ctrl+ shift+i

ou

cmd+ shift+i

URL do pacote: https://atom.io/packages/auto-indent

fhcoso
fonte
precisa de uma atualização, eu acho - não funciona para mim. Usando chamadas descontinuadas para a API
Dean_Wilson 27/05
11
Em vez disso eu baixado e instalado manualmente a partir github.com/griiin/atom-auto-indent e agora parece funcionar ...
Dean_Wilson
Nota: ele usa travessão 1 guia por padrão: /
bobo da corte rei do
24

Eu prefiro usar atom-beautify, CTRL+ ALT+ B(no linux, também pode estar no Windows) lida com todos os tipos de formatos e também é personalizável por formato de arquivo.

mais detalhes aqui: https://atom.io/packages/atom-beautify

ungalcrys
fonte
Com galho ele adiciona um espaço para patha função assim que a rota não pôde ser encontrado
Rodolfo Velasco
Penso que esta é a solução mais simples e limpa. Obrigado.
Alessandro
17

Você pode abrir rapidamente a paleta de comandos, fazê-lo
Cmd + Shift + pe procurar por Editor: Auto Indent:

captura de tela

codingninja
fonte
10
Isso não é rápido se você é um usuário de energia :)
Jad Joubran
5

Isso funciona para mim:

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

Você precisa selecionar tudo com o Ctrl-a primeiro.

dave doe
fonte
2

Se você tiver problemas com teclas de atalho, tente abrir Key Binding Resolver Windowcom Cmd + .. Ele mostrará as teclas que você pressiona em tempo real.

Por exemplo, Cmd + Shift + 'é realmenteCmd + "

Dmitriy
fonte
2

No Linux

(testado no UnDE KDE)

Existe a opção no menu, em Editar> Linhas> Recuo automático ou pressione Cmd + Shift + p, procure Editor: Auto Indentdigitando apenas "ai"

Nota: No KDE ctrl-alt-ljá está definido globalmente para "tela de bloqueio", então use melhor ctrl-alt-i.

Você pode adicionar um mapeamento de chave no Atom:

  • Cmd + Shift + p, pesquise "Visualização de configurações: Mostrar combinações de teclas"
  • clique em "seu arquivo de mapa de teclado"
  • Adicione uma seção como esta:

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

Se a indenção não estiver funcionando, pode ser um motivo para o término do arquivo não ser reconhecido pelo Atom. Adicione o suporte ao seu idioma e, por exemplo, para "Lua", instale o pacote "language-lua".

Se um arquivo não for reconhecido pelo seu idioma:

  • abra o ~/.atom/config.csonarquivo (por CTRL + SHIFT + p: digite `` open config '')
  • adicione / edite uma customFileTypesseção em, corepor exemplo, como o seguinte:

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

(Você encontra os nomes do escopo de idiomas ("source.lua", "text.html.php" ...) nas configurações do pacote de idiomas, veja aqui )

rubo77
fonte
0

Você também pode tentar adicionar um mapeamento de chave, que seleciona automaticamente todo o código do arquivo e o recua:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'
Hristian Yordanov
fonte
@IB Tente com 'atom-text-editor': 'ctrl-alt-l': 'editor: auto-indent' Antes de pressionar o atalho, selecione todo o texto do arquivo.
Hristian Yordanov 11/03/19
0

Eu estava trabalhando em algum código groovy, que não formata automaticamente ao salvar. O que fiz foi clicar com o botão direito do mouse no painel de código e escolher ESLint Fix. Isso corrigiu meus recuos.

insira a descrição da imagem aqui

Jeff Lowery
fonte