Текст и данные · Инструкция
Как включить final newline при сохранении в VS Code
Если линтер или Git постоянно жалуется на отсутствие перевода строки в конце файла, это можно исправлять автоматически при сохранении.
Короткий ответ
Включите `files.insertFinalNewline: true` в User или Workspace settings. После сохранения файл, в котором не было завершающего перевода строки, получит его автоматически.
Что именно делает files.insertFinalNewline
Параметр срабатывает при сохранении и добавляет перевод строки в конец файла, если его там нет. Он не меняет тип окончания строк во всём документе: LF/CRLF — отдельная настройка. Поэтому сначала убедитесь, что предупреждение инструмента относится именно к отсутствующему final newline, а не к смешанным окончаниям строк или лишним пустым строкам.
Совет: Проверьте сообщение линтера: «no newline at end of file» и «CRLF/LF mismatch» требуют разных исправлений.
Как включить настройку
- Откройте Settings и найдите Insert Final Newline.
- Включите Files: Insert Final Newline в нужной области — User для себя или Workspace для проекта.
- Либо добавьте в settings.json строку `"files.insertFinalNewline": true`.
- Откройте тестовый текстовый файл без завершающего перевода строки, измените его и сохраните.
- Посмотрите diff: должно появиться только ожидаемое изменение конца файла.
Предупреждение: Если в проекте есть автоформаттер, проверьте его правила: он может менять конец файла независимо от VS Code.
Похожие настройки, которые легко перепутать
- files.insertFinalNewline. добавляет финальный перевод строки, если его нет
- files.trimFinalNewlines. убирает лишние переводы строк после финального
- files.eol. задаёт предпочтительный тип окончания строк для новых файлов
User или Workspace: где включать
Если требование связано с репозиторием, его лучше согласовать с форматтером, EditorConfig и CI, а затем хранить в Workspace settings или в инструменте, который уже является source of truth для форматирования. Личную настройку можно оставить в User scope, но тогда коллеги без такого правила будут получать другой результат при сохранении. Сам VS Code позволяет задавать настройку и для отдельных языков, если это действительно нужно.
Важно: Для общего репозитория не вводите второе конкурирующее правило, если final newline уже контролирует EditorConfig или formatter.
Проверка после включения
- в diff нет массовой смены LF на CRLF или наоборот;
- после повторного сохранения новых изменений не возникает;
- линтер больше не сообщает об отсутствии финального перевода строки;
- настройка записана в правильный scope.
Как проверить настройку на реальном проекте
После изменения настройки откройте файл, в котором конец строки заметен в diff: удалите завершающий перевод строки, сохраните файл и снова посмотрите изменения в системе контроля версий. Если строка не добавилась, проверьте область действия параметра — User, Workspace или профиль языка — и настройки проекта, которые могут переопределять пользовательские. В командной работе полезно закрепить единое правило в конфигурации репозитория, а не полагаться только на личный VS Code. Тогда сохранение локально и проверки в CI не будут спорить друг с другом из-за одного символа в конце файла.
Что учитывать
Условия меняются. Страница отражает состояние на 2026-09-23; при расхождении с официальной документацией приоритет у первоисточника.
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. User and workspace settings). Пример и формулировки — редакция N1RO на 2026-09-23.