Основная информация
Vim не показывает последнюю новую строку в буфере, но фактически Vim всегда помещает EOL в конец файла, когда вы пишете его, потому что это стандарт для текстовых файлов в системах Unix. Вы можете найти больше информации об этом здесь . Одним словом вам не нужно беспокоиться об отсутствии новых строк в конце файла в vim.
Эксперимент 1
Вы можете сделать этот небольшой эксперимент, чтобы проверить это поведение. В терминале выполните:
$ vim test_test
Введите символ 1и сохраните файл :wq.
У вас есть только один символ в файле, верно? На самом деле нет :) Теперь у вас есть в вашем файле 1и LFсимволы. Давайте проверим это с помощью утилиты hexdump:
$ hexdump test_test
0000000 31 0a
0000002
31это ASCII-код для символа 1и 0aASCII-код для непечатаемого LFсимвола, который для UNIX, как вы, возможно, уже знаете код для конца строки.
Эксперимент 2
Но что, если мы откроем файл, у которого нет eolсимвола в конце файла. Давай проверим это тоже. Давайте создадим файл без eol в конце, например, так:
$ echo -n "1" > test_without_eol
Тогда снова давайте посмотрим внутрь с помощью hexdump:
$ hexdump test_without_eol
000000 31
0000001
Так что здесь нет никаких eolперсонажей. Давайте откроем этот файл в vim:
$ vim test_without_eol
Внизу редактора вы увидите:
"test_without_eol" [noeol] 1L, 1C
И если вы сохраните этот файл, eolперсонаж будет вставлен автоматически.
Что мы можем сделать по этому поводу?
Если вам действительно нужно увидеть конец файла. Попробуйте использовать эту команду:
:set listchars=eol:$
он покажет все eolсимволы в виде $знака.