n1ro°
RU

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

Как включить trim final newlines в VS Code

Несколько пустых строк в конце файла создают шум в diff и иногда нарушают правила форматирования. VS Code умеет убирать такие переводы строк при сохранении отдельной настройкой, не трогая пустые строки внутри документа.

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

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

Включите `files.trimFinalNewlines: true`. При сохранении VS Code удалит переводы строк, которые идут после последнего необходимого финального перевода строки.

Чем trimFinalNewlines отличается от trimTrailingWhitespace

`files.trimFinalNewlines` работает только с концом файла. `files.trimTrailingWhitespace` удаляет пробелы и табы в конце строк по всему документу. Если задача — убрать три пустые строки после последней строки кода, нужен первый параметр; если остаются пробелы перед переводом строки, это уже другой случай.

Совет: Перед включением посмотрите diff проблемного файла: по нему сразу видно, что именно создаёт шум.

Настройка и безопасная проверка

  1. Откройте Settings и введите Trim Final Newlines.
  2. Включите Files: Trim Final Newlines или добавьте `"files.trimFinalNewlines": true` в settings.json.
  3. Создайте тестовый файл и оставьте после последней строки несколько пустых строк.
  4. Сохраните файл и снова откройте конец документа.
  5. Проверьте Source Control: изменения должны касаться только лишнего хвоста файла.

Предупреждение: Не включайте одновременно десяток save-actions и formatter fixes во время диагностики: иначе трудно понять, какой инструмент изменил файл.

Как получить ровно один финальный перевод строки

Если проект требует ровно один перевод строки в конце, `trimFinalNewlines` удобно сочетать с `files.insertFinalNewline`. Первый убирает лишний хвост, второй добавляет final newline, когда его нет. Такое сочетание не заменяет EditorConfig или форматтер, если они уже задают те же правила, поэтому в командном проекте выберите один основной механизм и избегайте конфликтующих настроек.

Когда результат считается правильным

  • лишние пустые строки после содержимого исчезли;
  • пустые строки внутри файла сохранились;
  • тип окончания строк LF/CRLF не изменился неожиданно;
  • повторное сохранение не создаёт новый diff.

Важно: Если после сохранения каждый раз меняется ещё и форматирование кода, проверьте Format on Save и Code Actions on Save отдельно.

Почему настройка может казаться нерабочей

Чаще всего значение переопределено для Workspace или языка, либо файл меняет внешний formatter. Откройте Settings и посмотрите, откуда берётся effective value. Затем временно сохраните простой `.txt` или другой файл без форматтера. Если там хвост обрезается правильно, проблема не в `files.trimFinalNewlines`, а в цепочке инструментов конкретного языка.

Почему пустые строки могут появляться снова

Если лишние пустые строки возвращаются после сохранения, сначала выясните, кто меняет файл: сам редактор, formatter, генератор кода или post-save задача. Сравните файл сразу после сохранения и после запуска форматирования; так проще отделить два действия. Для генерируемых файлов лучше исправлять шаблон или генератор, а не постоянно чистить результат вручную. В репозитории также проверьте настройки рабочей области: параметр в `.vscode/settings.json` может отличаться от User Settings. Такой тест быстрее, чем по очереди отключать все расширения и гадать, почему хвост файла меняется.

Что учитывать

Чаще всего значение переопределено для Workspace или языка, либо файл меняет внешний formatter. Откройте Settings и посмотрите, откуда берётся effective value. Затем временно сохраните простой `.txt` или другой файл без форматтера. Если там хвост обрезается правильно, проблема не в `files.trimFinalNewlines`, а в цепочке инструментов конкретного языка.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. User and workspace settings). Пример и формулировки — редакция N1RO на 2026-09-23.