Nie dodawaj nowej linii na końcu pliku


11

Podczas zapisywania Vim zawsze dodaje nowy wiersz na końcu moich plików i powoduje błędy w moich skryptach PHP.

Jak sprawić, aby vim nie dodawał tej nowej linii przy zapisywaniu?


7
„powoduje błędy w moich skryptach PHP” -> To dziwne? PHP powinno dobrze działać z końcowym znakiem nowej linii. W rzeczywistości jest to prawie standard. Być może masz pustą linię po tym, ?>co PHP wysyła do przeglądarki (powodując błąd „nagłówki już wysłane”)? Nie potrzebujesz końcowego ?>, i zwykle zaleca się, aby go pominąć, aby dokładnie uniknąć tego problemu.
Martin Tournoij

Myślę, że to wprowadza w błąd. Nasze skrypty interpretują każde wyjście jako błąd.
Dan


1
Nie. Vim nie dodaje nowej linii.
romainl

Odpowiedzi:


11

To nie jest całkowicie pusta linia, tylko ostatnia nowa linia na końcu ostatniej linii. Narzędzia uniksowe (jak dziedzictwo Vima) nalegają na dodanie tego, podczas gdy system operacyjny Windows nie jest tak rygorystyczny. Możesz przeczytać więcej na ten temat na stronie Dlaczego pliki powinny kończyć się nową linią?

Niestety, dość skomplikowane jest uniemożliwienie Vimowi napisania ostatniej nowej linii. Wtyczka My PreserveNoEOL może to zrobić. Omówienie podejść można również znaleźć w VIM Wyłącz automatyczną nową linię na końcu pliku .


Zwracając uwagę na przyszłych czytelników, że chociaż ta odpowiedź była wtedy świetna, w nowszych wersjach Vima istnieje znacznie prostsze rozwiązanie w odpowiedzi zamieszczonej później .
Bogaty

11

W nowych wersjach Vima jest na to wreszcie opcja

Vim 7.4.785 dodaje opcję „fixeol”, którą można wyłączyć, aby automatycznie zachować brakujące EOL na końcu pliku.

(patrz strona wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

~/.vimrcDodaj swoją linię:

set nofixeol

Uruchom ponownie vim, teraz nie powinien dodawać nowego wiersza na końcu pliku.

(działa tylko od wersji vima 7.4.785)


0

Czy próbowałeś otworzyć plik w trybie binarnym? Spróbować vim -b file_name. Nie powinien dodawać nowej linii na końcu pliku.


Próbowałem to zrobić, a następnie użyć xxddo weryfikacji, ale nadal dodaje linefeed ( 0a) nawet w trybie binarnym.
James
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.