Основна інформація
Vim не показує останній новий рядок у буфері, але насправді vim завжди розміщує EOL в кінці файлу, коли ви пишете його, оскільки він стандартний для текстових файлів в системах Unix. Ви можете знайти більше інформації про це тут . Якщо коротко, вам не доведеться турбуватися про відсутність нових рядків у кінці файлу in 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
символи як $
знак.