EditorConfig
EditorConfig — файл
.editorconfigв корне проекта, задающий базовые параметры редактора (отступы, кодировку, конец строки) для всех участников команды независимо от их IDE.
Зачем нужно
Когда один разработчик использует VS Code с настройкой «4 пробела», другой — Vim с табами, каждый коммит содержит изменения отступов. EditorConfig фиксирует эти параметры на уровне проекта, и все редакторы автоматически применяют их — без ручной настройки у каждого.
Где используется
- Любой командный проект с разными IDE у участников
- Проекты с разными типами файлов: JSON (2 пробела), Makefile (табы обязательны), Python (4 пробела)
- Open source проекты: стандартизация для новых контрибьюторов
- Корпоративные стандарты кодирования
Основной контент
Поддержка редакторами
EditorConfig поддерживается из коробки в:
- VS Code (встроено)
- JetBrains IDEs (IntelliJ, WebStorm, PyCharm...)
- Vim/Neovim (плагин)
- Atom, Sublime Text (плагин)
Синтаксис .editorconfig
# Корневой файл (только в корне проекта)
root = true
# Для всех файлов
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
# JavaScript и TypeScript
[*.{js,ts,jsx,tsx}]
indent_size = 2
# JSON
[*.json()]
indent_size = 2
# Python
[*.py]
indent_size = 4
# Makefile — табы обязательны
[Makefile]
indent_style = tab
# Markdown — не удалять пробелы в конце строк (два пробела = перенос)
[*.md]
trim_trailing_whitespace = false
Параметры
| Параметр | Значения | Описание |
|---|---|---|
indent_style |
space / tab |
Тип отступа |
indent_size |
число | Размер отступа |
end_of_line |
lf / crlf / cr |
Конец строки |
charset |
utf-8 и др. |
Кодировка |
insert_final_newline |
true / false |
Пустая строка в конце |
trim_trailing_whitespace |
true / false |
Удалять пробелы в конце |
Glob-паттерны для секций
[*] # все файлы
[*.js] # только .js
[*.{js,ts}] # .js и .ts
[src/**] # все в папке src
[!vendor/**] # исключить vendor
Частые ошибки
root = trueпропущен — EditorConfig ищет файлы вверх по дереву директорий; безroot = trueможет найти другой.editorconfigв родительской папке- Конфликт с Prettier — EditorConfig задаёт базовые параметры редактора, Prettier форматирует код; они не конфликтуют, но должны быть согласованы (
indent_sizeодинаковый) - LF vs CRLF на Windows — установи
end_of_line = lfдля кроссплатформенных проектов; иначе Git будет видеть изменения в каждом файле
Связанные темы
- _MOC Инструменты
- ESLint + Prettier -- совместная работа
- Git -- рабочая директория, staging area, репозиторий