Атом - Принудительная ширина вкладки 2

Я только что переключился с Sublime Text на Atom, чтобы полностью открыть исходный код.

У меня проблема с чем-то очень простым: я хочу, чтобы Atom всегда (!) и при любых обстоятельствах использовал табуляцию шириной 2 и заменял табуляцию пробелами. Этот параметр настолько прост в gedit или Sublime Text, но независимо от того, что я пытаюсь сделать: когда я начинаю новый файл, размер вкладки равен 2 (хорошо!). Когда я использую существующий файл, размер табуляции иногда равен 4. Меня это немного раздражает.

Мои текущие настройки в редакторе видны на скриншоте:

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


person MenschMarcus    schedule 07.02.2017    source источник


Ответы (3)


Существует более одной настройки вкладки

Каждый пакет (например, python-language) имеет свои настройки на вкладке. Использует ли язык глобальное значение по умолчанию или собственное значение по умолчанию, зависит от того, кто создал пакет, но обычно вы можете переопределить его.

На вашем снимке экрана вы установили «Тип вкладки» на «мягкий». Это позаботится об использовании пробелов, а не вкладок. Вы оставили ширину вкладки по умолчанию, равную 2. Это ваша глобальная настройка.

Теперь, если вы посмотрите в разделе «Пакеты» и выполните поиск «python», вы найдете пакет с именем «language-python». Нажмите на кнопку его настроек, и вы найдете ряд настроек, специфичных для синтаксиса.

  • Грамматика Python
  • Грамматика консоли Python
  • Грамматика обратной трассировки Python
  • Регулярные выражения (Python) Грамматика

Каждая из этих грамматик имеет собственную настройку длины табуляции. Здесь вы можете явно установить для них значение 2, чтобы переопределить значение пакета по умолчанию. (Возможно, вас больше всего волнует первый из них, Python Grammar.)

Питон отличается

В случае с Python пакет явно настроен на использование по умолчанию 4 пробелов, вероятно, потому, что Python очень требователен к пробелам, и PEP 8 рекомендует отступы в 4 пробела. Вы можете увидеть настройку пакета по умолчанию здесь, в источнике пакета:

https://github.com/atom/language-python/blob/master/settings/language-python.cson

'autoIndentOnPaste': false
'softTabs': true
'tabLength': 4

Это переопределяет глобальное значение по умолчанию. Вот почему Python Grammar не учитывает ширину глобальной вкладки, как это делает большинство пакетов.

Иногда бывают переопределения пакетов

Кроме того, некоторые пакеты переопределяют ваши настройки по причинам синтаксиса. Например, language-make переопределит и будет использовать настоящие табуляции вместо пробелов, потому что это требуется делать.

В случае с Python существует переопределение использования пробелов. На странице настроек language-python есть место для изменения уровня отступа, но нет возможности переключиться на использование символов табуляции. (Это, вероятно, оправдано, поскольку символы табуляции и смешанные отступы в Python являются очень распространенной причиной трудно отлаживаемых синтаксических ошибок.)

Возможно, вам придется перезагрузить

Наконец, иногда настройки не вступают в силу полностью, пока вы не перезагрузите окно Atom. Для этого вы можете использовать команду Window: Reload. Или с помощью клавиатуры:

  • Mac: CtrlОпцCmdL
  • Windows/Linux: CtrlAltR
person Dan Lowe    schedule 07.02.2017
comment
Я пробовал все это, но это не меняет количество пробелов для вкладки. - person soham; 05.06.2017
comment
@ soham.m17 Все, что вам нужно сделать, это первая часть — зайти в настройки пакета language-python и изменить вкладки для грамматики Python на 2. Остальная часть этого ответа — просто дальнейшее объяснение того, почему Python не соблюдает глобальные настройки таким образом. большинство пакетов делают. - person Dan Lowe; 05.06.2017
comment
По умолчанию в пакете language-python уже установлено значение 2. Я щелкнул текстовое поле и проверил. - person soham; 05.06.2017
comment
@ soham.m17 ты перезагрузил окно? - person Dan Lowe; 05.06.2017
comment
Да, я закрыл и перезапустил Атом - person soham; 05.06.2017
comment
@ soham.m17 soham.m17 Я не знаю, что вам сказать - я проверил вышеизложенное (изменение грамматики Python на 2) на Atom 1.17 на Mac, и это сработало. Вы можете попробовать разместить сообщение на discuss.atom.io, возможно, это можно отладить. Stackoverflow не подходит для отладки конкретных пользовательских ситуаций в комментариях. - person Dan Lowe; 05.06.2017
comment
Большое спасибо за это объяснение. Длина моей вкладки была установлена ​​​​на 2 в настройках редактора, и я не понимал, почему мои вкладки по-прежнему имеют длину 4: пакет language-C, но пакет language-cpp14 переопределил его на 4. - person pamplemousse_mk2; 26.06.2018

Это то, что сработало для меня.

  1. Отключить все пакеты не по умолчанию
  2. Откройте ~/.atom/config.cson и добавьте это (тот же уровень, что и элемент "*")

:

".python.source":
  editor:
    autoIndent: true
    tabLength: 2
  1. Повторно включите все пакеты.

Я получил эту помощь от кого-то еще. Не мое собственное открытие. Однако в целях конфиденциальности я не могу указать источник.

person soham    schedule 05.07.2017
comment
можно ли принудительно выполнить повторное отождествление, просто изменив конфигурацию? - person Adi Prasetyo; 04.05.2021

Основываясь на ответе Сохама, я обнаружил, что установка всех полей tabLength: в ~/.atom/config.cson (при условии osx) на желаемую длину решила проблему.

person John Jiang    schedule 23.06.2019