Не додайте новий рядок у кінці файлу


11

Під час збереження Vim завжди додає новий рядок в кінці моїх файлів, і це викликає помилки в моїх скриптах PHP.

Як я можу зробити так, щоб vim не додав цей новий рядок для збереження?


7
"це викликає помилки в моїх скриптах PHP" -> Це дивно? PHP повинен чудово працювати з новим рядком. Насправді це майже стандарт. Можливо, у вас є порожній рядок, після ?>якого PHP виводиться в браузер (викликаючи помилку "заголовки вже надіслані")? Вам не потрібен останній ?>, і зазвичай рекомендується залишати його, щоб запобігти саме цій проблемі.
Мартін Турнойдж

Я гадаю, що це вводить в оману. Наші сценарії трактують будь-який вихід як помилку.
Dan


1
Ні. Vim не додає новий рядок.
romainl

Відповіді:


11

Це не повний порожній рядок, а остаточний новий рядок в кінці останнього рядка. Інструменти Unix (як спадщина Vim) наполягають на тому, щоб додати, хоча операційна система Windows не така сувора. Докладніше про це ви можете прочитати у розділі Чому файли закінчуються новим рядком?

На жаль, досить складно запобігти написанню Vim остаточного рядка. Мій плагін PreserveNoEOL може це зробити. Для обговорення підходів також див. VIM Disable Automatic Newline At End Of File .


Тільки зазначивши майбутніх читачів, що в той час ця відповідь була приголомшливою, але в останніх версіях Vim є набагато простіше рішення у відповіді, опублікованій пізніше .
Багатий

11

У нових версіях Vim нарешті є варіант для цього

Vim 7.4.785 додає параметр 'fixeol', який можна відключити, щоб автоматично зберегти будь-який зниклий EOL в кінці файлу.

(див. сторінку вікі: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

У вашому ~/.vimrcдодати наступний рядок:

set nofixeol

Перезапустіть vim, тепер він не повинен додавати новий рядок у кінці файлу.

(працює лише з версії 7.4.785 vim)


0

Ви спробували відкрити файл у двійковому режимі? Спробуйте vim -b file_name. Він не повинен додавати новий рядок у кінці файлу.


Я спробував це зробити, а потім використовував xxdдля перевірки, але він все ще додає виправлення рядків ( 0a) навіть у двійковому режимі.
Джеймс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.