Текст и данные · Инструкция
Как включить trim final newlines в VS Code
Несколько пустых строк в конце файла создают шум в diff и иногда нарушают правила форматирования. VS Code умеет убирать такие переводы строк при сохранении отдельной настройкой, не трогая пустые строки внутри документа.
Короткий ответ
Включите `files.trimFinalNewlines: true`. При сохранении VS Code удалит переводы строк, которые идут после последнего необходимого финального перевода строки.
Чем trimFinalNewlines отличается от trimTrailingWhitespace
`files.trimFinalNewlines` работает только с концом файла. `files.trimTrailingWhitespace` удаляет пробелы и табы в конце строк по всему документу. Если задача — убрать три пустые строки после последней строки кода, нужен первый параметр; если остаются пробелы перед переводом строки, это уже другой случай.
Совет: Перед включением посмотрите diff проблемного файла: по нему сразу видно, что именно создаёт шум.
Настройка и безопасная проверка
- Откройте Settings и введите Trim Final Newlines.
- Включите Files: Trim Final Newlines или добавьте `"files.trimFinalNewlines": true` в settings.json.
- Создайте тестовый файл и оставьте после последней строки несколько пустых строк.
- Сохраните файл и снова откройте конец документа.
- Проверьте 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.