Текст и данные · Инструкция
Как отключить detect indentation в VS Code
По умолчанию VS Code анализирует открытый файл и может переопределить ваши `editor.tabSize` и `editor.insertSpaces`.
Короткий ответ
Установите `editor.detectIndentation: false`, затем явно задайте `editor.tabSize` и `editor.insertSpaces`. После этого VS Code перестанет менять эти два параметра на основании содержимого открытого файла.
Почему tabSize меняется сам
Автоопределение отступов включено по умолчанию. VS Code анализирует содержимое и подбирает распространённый размер отступа, а обнаруженные значения перекрывают ваши обычные defaults для текущего файла. В документации отдельно отмечено, что анализ ориентируется на отступы 2, 4, 6 или 8 пробелов; нестандартные схемы поэтому особенно удобнее задавать вручную.
Совет: Сначала нажмите индикатор Spaces/Tab Size в строке состояния: там видно, что редактор применил к текущему файлу.
Как зафиксировать отступы вручную
- Откройте Settings и найдите Detect Indentation.
- Снимите флажок Editor: Detect Indentation или добавьте `"editor.detectIndentation": false`.
- Задайте `editor.insertSpaces` — true для пробелов или false для табов.
- Укажите `editor.tabSize`, например 2 или 4, согласно правилам проекта.
- Переоткройте тестовый файл и проверьте индикатор отступов в Status Bar.
Предупреждение: Отключение автоопределения не преобразует уже существующие отступы. Оно меняет поведение редактора при дальнейшей работе.
Если нужно исправить уже существующий файл
Для преобразования используйте команды Indent Using Spaces / Indent Using Tabs и Convert Indentation to Spaces / Tabs из меню индикатора отступов. Перед массовым изменением откройте diff: в смешанном файле такая операция может затронуть почти каждую строку. Если репозиторий использует EditorConfig или formatter, согласуйте ручные значения с ними, иначе сохранение снова вернёт другой стиль.
Проверка результата
- detectIndentation выключен в нужном scope;
- tabSize соответствует правилам проекта;
- insertSpaces задан явно;
- после повторного открытия файла значения не меняются;
- форматтер не навязывает другой отступ.
Важно: Для командного проекта лучше иметь одно явное правило отступов в EditorConfig/formatter, чем полагаться на личные настройки каждого разработчика.
Когда автоопределение лучше оставить включённым
Если вы часто открываете независимые проекты с разными стилями, detectIndentation экономит переключения и обычно корректно подстраивается под существующий файл. Отключать его имеет смысл, когда есть стабильный стандарт и автоанализ регулярно ошибается. Для разового файла можно изменить отступ через Status Bar, не меняя глобальную настройку для всех рабочих пространств.
Как зафиксировать отступы только для одного языка
Если автоопределение мешает только в конкретных файлах, не обязательно отключать его глобально. Откройте language-specific settings и задайте для нужного языка `editor.detectIndentation: false`, а рядом — явные `editor.tabSize` и `editor.insertSpaces`. После этого откройте проблемный файл заново и проверьте строку состояния: VS Code должен показывать ожидаемую ширину и тип отступа. Для смешанного репозитория это безопаснее глобального запрета, потому что Python, JSON и Makefile могут требовать разной политики. Если проект использует EditorConfig, учитывайте и его: он может задавать отступы независимо от личных настроек редактора.
Что учитывать
Автоопределение отступов включено по умолчанию. VS Code анализирует содержимое и подбирает распространённый размер отступа, а обнаруженные значения перекрывают ваши обычные defaults для текущего файла. В документации отдельно отмечено, что анализ ориентируется на отступы 2, 4, 6 или 8 пробелов; нестандартные схемы поэтому особенно удобнее задавать вручную.
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. Basic editing). Пример и формулировки — редакция N1RO на 2026-09-23.