Как сделать авто-отступ кода в редакторе Atom?


393

Как вы автоматически делаете отступ в своем коде в редакторе Atom? В других редакторах вы обычно можете выбрать некоторый код и автоматически сделать отступ.

Также есть сочетание клавиш?

Ответы:


664

Я нашел эту опцию в меню, под Edit> Lines> Auto Indent. Кажется, он не имеет привязки к таблице ключей по умолчанию.

Вы можете попытаться добавить сопоставление клавиш (Atom> Открыть вашу таблицу ключей [в Windows: Файл> Настройки> Сочетания клавиш> «файл вашей таблицы ключей»]), например, так:

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

У меня это сработало :)


Для Windows:

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

1
Спасибо! Было бы неплохо, если бы он делал ядро: select-all прямо перед этим, но не представлял, как это сделать.
doobdargent

3
@doobdargent Я создал вопрос с ответом о том, как объединить две команды в новую команду здесь: stackoverflow.com/questions/24456995/…
Lee

15
Можно также cmd + shift + pи поискатьEditor: Auto Indent
codingninja

1
Я нашел способ связать этот подход сначала «Выбрать все» (а затем восстановить исходный выбор), чтобы вы могли сделать все это одним нажатием клавиши - см. Мой ответ ниже. stackoverflow.com/a/33927654/398630
BrainSlugs83

4
Для Ubuntu это [Edit> Open Your Keymap]. И как ctrl-alt-lярлык по умолчанию в Ubuntu для экрана блокировки, я ctrl-shift-]пока сопоставляю .
Вусан

91

Принятый ответ работает, но вы должны сначала сделать «Выбрать все» - каждый раз - и я слишком ленив для этого.

И оказывается, что это не супер тривиально - я решил опубликовать это здесь, чтобы спасти единомышленников за 30 минут, которые требуются, чтобы выследить все это. - Также обратите внимание: этот подход восстанавливает исходный выбор, когда он сделан (и это происходит так быстро, что вы даже не замечаете, что выбор когда-либо изменялся).

1.) Сначала добавьте пользовательскую команду в ваш скрипт инициализации (Файл-> Открыть скрипт инициализации, затем вставьте его внизу):

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.) Свяжите «custom: reformat» с ключом (File-> Open Your Keymap, затем вставьте его внизу):

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

3.) Перезапустите Atom (скрипт init.coffee запускается только при первом запуске atom).


Интересно. Я не уверен, что хотел бы, чтобы это автоматически автоматически делало отступ все. Встроенный позволяет сделать отступ для выбора. Можно утверждать, что правильное отступление - это всегда то, что нужно иметь.
Зельфир Кальцталь

2
@Zelphir У меня обычно есть одна привязка клавиш для выбора отступа и другая привязка клавиш для отступа всех. - Я не использую отступ все так часто, но приятно иметь его, когда он тебе нужен.
BrainSlugs83

@ BrainSlugs83 Может быть, немного оффтоп: я заметил, что есть проблема при попытке автоматического отступа языков, которые не используют фигурные скобки для маркировки блоков кода и позволяют определять функции или классы внутри других. Редактор не может знать, что на каком уровне в этих случаях.
Зельфир Кальцталь

2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowдобавление этого условия по- editor.selectAll();прежнему позволяет делать отступ только для выделения. Если выбора нет, будет сделан отступ для всего файла.
manish_s

1
Если вы хотите сделать один шаг отмены для всей команды, добавьте это после определения редактора: checkpoint = editor.createCheckpoint();и это в конце:editor.groupChangesSinceCheckpoint(checkpoint);
Дан

43

Авто-отступ пакета существует, чтобы применить авто-отступ ко всему файлу с помощью этих ярлыков :

ctrl+ shift+i

или

cmd+ shift+i

URL пакета: https://atom.io/packages/auto-indent


Мне нужно обновление, я думаю - не работает для меня. Использование устаревших вызовов API
Dean_Wilson

1
Вместо этого я скачал и установил вручную с github.com/griiin/atom-auto-indent и теперь, кажется, работает ...
Dean_Wilson

Примечание: по умолчанию используется отступ в 1 вкладку: /
Шут Кинга

24

Я предпочитаю использовать atom-beautify, CTRL+ ALT+ B(в linux, может быть и в windows) обрабатывает все виды форматов, а также настраивается для каждого формата файла.

более подробная информация здесь: https://atom.io/packages/atom-beautify


С веткой это добавляет пространство для pathфункции, поэтому маршрут не может быть найден
Родольфо Веласко

Я думаю, что это самое простое и чистое решение. Спасибо.
Алессандро

17

Вы можете просто быстро открыть командную палитру и сделать это там
Cmd + Shift + p и искать Editor: Auto Indent:

Скриншот


10
Это не быстро, если вы опытный пользователь :)
Jad Joubran

5

Это работает для меня:

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

Вы должны выбрать все сначала с помощью ctrl-a .



2

Если у вас есть проблемы с помощью горячих клавиш, попробуйте открыть Key Binding Resolver Windowс Cmd + .. Он покажет вам клавиши, которые вы нажимаете в режиме реального времени.

Например, Cmd + Shift + 'на самом делеCmd + "


2

В линуксе

(проверено в Ununtu KDE)

В меню есть пункт « Правка»> «Линии»> «Автопоказ» или нажмите « Cmd + Shift + pПоиск Editor: Auto Indent», введя просто «ai».

Примечание. В KDE ctrl-alt-lуже установлено глобальное значение «экран блокировки», поэтому лучше использовать его ctrl-alt-i.

Вы можете добавить отображение ключей в Atom:

  • Cmd + Shift + pнайдите "Просмотр настроек: Показать сочетания клавиш"
  • нажмите на «ваш файл раскладки»
  • Добавьте раздел там, как этот:

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

Если отступ не работает, это может быть причиной того, что окончание файла не распознается Atom. Добавьте поддержку вашего языка, затем, например, для «Lua» установите пакет «language-lua».

Если файл не распознается для вашего языка:

  • открыть ~/.atom/config.csonфайл (с помощью CTRL + SHIFT + p: набрать `` open config '')
  • добавить / изменить customFileTypesраздел, coreнапример, следующим образом:

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

(Вы можете найти имена областей действия языков ("source.lua", "text.html.php" ...) в настройках языкового пакета, см. Здесь )


0

Вы также можете попытаться добавить сопоставление клавиш, чтобы автоматически выделить весь код в файле и сделать отступ:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'

@IB Попробуйте с помощью 'atom-text-editor': 'ctrl-alt-l': 'editor: auto-indent' Перед нажатием ярлыка выделите весь текст в файле.
Христиан Йорданов

0

Я работал над отличным кодом, который не сохраняет автоматически при сохранении. Я щелкнул правой кнопкой мыши на панели кода и выбрал ESLint Fix. Это исправило мои отступы.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.