Можете ли вы заставить Vim отображать пустую строку в конце файла?

StackOverflow https://stackoverflow.com/questions/1200856

Вопрос

Когда я открываю текстовый файл в Блокноте, он показывает пустую строку, если в конце последней строки, содержащей текст, есть возврат каретки.Однако в Vim эта пустая строка не отображается.Еще одна вещь, которую я заметил, это то, что редактор Vim добавляет возврат каретки к последней строке по умолчанию (даже если он этого не показывает).Я могу сказать, потому что если я открываю файл в Блокноте, который был создан в Vim, он показывает пустую строку в конце файла.

В любом случае, я могу смириться с этими двумя различиями, но мне интересно, есть ли в Vim опция, позволяющая вам переключать это поведение.

Спасибо

PS - GVim 7.2

[Обновление]

Имеет ли смысл вместо этого быть причиной сбоя сервера?

[Обновление 2]

Я перефразирую это...Мне нужно знать, когда происходит возврат каретки в конце однострочного файла (Блокнот показывает дополнительную строку без текста, с Vim я не могу сказать).Это происходит из-за программы Progress, которая считывает текстовый файл (ожидает одну строку, но с возвратом каретки) и анализирует текст для какой-то цели.Если возврата каретки нет, Progress обрабатывает строку так, как если бы она была нулевой.

[Обходное решение] Один из способов, который я нашел, чтобы обеспечить возврат каретки (но убедитесь, что я не добавляю вторую), - убедиться, что у меня включена опция записи в конец строки (:set eol), а затем просто выполните запись / сохранение.Это поставит точку в конце строки в файле, если ее там еще нет.В противном случае он не добавит новый.

Это было полезно?

Решение

:help endofline

объясняет, как вы могли бы запретить vim добавлять дополнительный перевод строки.

Другие советы

Похоже, что vim обрабатывает новую строку как ограничитель строки, в то время как notepad обрабатывает ее как разделитель строк:От http://en.wikipedia.org/wiki/Newline

Существует также некоторая путаница в том переводы строк прекратить или отдельных строках.Если новая строка считается разделителем , то новой строки не будет после последней строки файла. Общим соглашением в большинстве систем является добавлять новую строку даже после последней строки, т. е. рассматривать новую строку как строку terminator.У некоторых программ возникают проблемы с обработкой последней строки файла, если он не завершается переводом строки.И наоборот, программы, которые ожидают, что в качестве разделителя будет использоваться новая строка, будут интерпретировать последнюю новую строку как начальную новую (пустую) строку.Это может привести к сообщению о другом количестве строк для файла, но в остальном это может быть в целом безвредно.

Если я правильно помню, в системах unix-y текстовый файл должен заканчиваться новой строкой.

Одной из полезных опций Vim является

set list

Это поможет вам увидеть все символы конца строк (и, возможно, другие обычно невидимые символы).Таким образом, вы сможете просмотреть эту последнюю конечную строку непосредственно в Vim, а не только в Notepad.

Когда вы открываете файл в VIM, в строке состояния должно быть написано [noeol] после имени файла.Так что это один из признаков.Как Manni сказал, что вы можете изменить это, установив оба endofline опция выключена, и binary опция включена.Вы можете установить это в качестве настроек по умолчанию в .vimrc файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top