Основная информация
Vim не показывает последнюю новую строку в буфере, но фактически Vim всегда помещает EOL в конец файла, когда вы пишете его, потому что это стандарт для текстовых файлов в системах Unix. Вы можете найти больше информации об этом здесь . Одним словом вам не нужно беспокоиться об отсутствии новых строк в конце файла в vim.
Эксперимент 1
Вы можете сделать этот небольшой эксперимент, чтобы проверить это поведение. В терминале выполните:
$ vim test_test
Введите символ 1
и сохраните файл :wq.
У вас есть только один символ в файле, верно? На самом деле нет :) Теперь у вас есть в вашем файле 1
и LF
символы. Давайте проверим это с помощью утилиты hexdump:
$ hexdump test_test
0000000 31 0a
0000002
31
это ASCII-код для символа 1
и 0a
ASCII-код для непечатаемого 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
символы в виде $
знака.