Можете ли вы заставить Vim показывать пустую строку в конце файла? - PullRequest
12 голосов
/ 29 июля 2009

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

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

Спасибо

PS - GVim 7.2

[Update]

Имеет ли смысл вместо этого использовать Server Fault?

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

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

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

Ответы [ 4 ]

6 голосов
/ 29 июля 2009
:help endofline

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

3 голосов
/ 30 июля 2009

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

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

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

2 голосов
/ 29 июля 2009

Одна полезная опция Vim -

set list

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

1 голос
/ 29 июля 2009

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

...