n1ro°
RU

Текст и данные · Инструкция

Как включить final newline при сохранении в VS Code

Если линтер или Git постоянно жалуется на отсутствие перевода строки в конце файла, это можно исправлять автоматически при сохранении.

Редакция N1RO · Проверено

Короткий ответ

Включите `files.insertFinalNewline: true` в User или Workspace settings. После сохранения файл, в котором не было завершающего перевода строки, получит его автоматически.

Что именно делает files.insertFinalNewline

Параметр срабатывает при сохранении и добавляет перевод строки в конец файла, если его там нет. Он не меняет тип окончания строк во всём документе: LF/CRLF — отдельная настройка. Поэтому сначала убедитесь, что предупреждение инструмента относится именно к отсутствующему final newline, а не к смешанным окончаниям строк или лишним пустым строкам.

Совет: Проверьте сообщение линтера: «no newline at end of file» и «CRLF/LF mismatch» требуют разных исправлений.

Как включить настройку

  1. Откройте Settings и найдите Insert Final Newline.
  2. Включите Files: Insert Final Newline в нужной области — User для себя или Workspace для проекта.
  3. Либо добавьте в settings.json строку `"files.insertFinalNewline": true`.
  4. Откройте тестовый текстовый файл без завершающего перевода строки, измените его и сохраните.
  5. Посмотрите 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.