как узнать, когда vim добавил символ EOL

Как я могу увидеть в vim, когда в конце файла есть символ новой строки? Кажется, vim всегда показывает его, независимо от того, есть он на самом деле или нет.

Например, открытие файла с новой строкой в ​​конце:

echo "hi" > hi
# confirm that there are 3 characters, because of the extra newline added by echo
wc -c hi 
# open in binary mode to prevent vim from adding its own newline
vim -b hi
:set list

Это показывает:

hi$

Теперь для сравнения файл без новой строки:

# prevent echo from adding newline
echo -n "hi" > hi
# confirm that there are only 2 characters now
wc -c hi 
# open in binary mode to prevent vim from adding its own newline
vim -b hi
:set list

Еще показывает:

hi$

Итак, как я могу увидеть, действительно ли файл имеет новую строку в конце или нет в vim?


person Magnus    schedule 23.10.2013    source источник
comment
возможный дубликат Vim показать новую строку в конце файла   -  person jheddings    schedule 23.10.2013


Ответы (3)


Vim хранит эту информацию в опции буфера 'endofline'. Вы можете проверить с

:setlocal eol?
person Ingo Karkat    schedule 23.10.2013
comment
очень сбивает с толку, что он называется eol вместо eof. В целом разочаровывающее поведение vim, но так оно и есть - person Magnus; 24.10.2013
comment
Ну, отсутствующий символ — это символ конца строки/новой строки. Подумайте об этом только для последней строки в буфере. То, что вас разочаровывает, — это просто хороший стиль мышления Unix. Наследие vi проявляется здесь, да. - person Ingo Karkat; 24.10.2013

Во втором случае Vim отображает [noeol] при загрузке файла.

Разве вы не видите вывод [noeol] при загрузке этого файла?

person Christian Brabandt    schedule 23.10.2013

Vim предупреждает вас, когда открывает/записывает файл без <EOL> в конце последней строки:

"filename" [noeol] 4L, 38C
"filename" [noeol] 6L, 67C written
person romainl    schedule 23.10.2013