Fügen Sie am Ende einer Datei keine neue Zeile hinzu

10

Vim fügt beim Speichern immer eine neue Zeile am Ende meiner Dateien hinzu und verursacht Fehler in meinen PHP-Skripten.

Wie kann ich vim dazu bringen, diese neue Zeile beim Speichern nicht hinzuzufügen?

Dan
quelle
7
"Es verursacht Fehler in meinen PHP-Skripten" -> Das ist seltsam? PHP sollte gut mit einem nachgestellten Zeilenumbruch funktionieren. In der Tat ist dies so ziemlich Standard. Vielleicht haben Sie eine leere Zeile nach der ?>Ausgabe von PHP an den Browser (was den Fehler "Header bereits gesendet" verursacht)? Sie benötigen kein Trailing ?>, und es wird normalerweise empfohlen, es wegzulassen, um genau dieses Problem zu vermeiden.
Martin Tournoij
Ich denke, das ist irreführend. Unsere Skripte interpretieren jede Ausgabe als Fehler.
Dan
1
Nein, Vim fügt keine neue Zeile hinzu.
Romainl

Antworten:

11

Dies ist keine vollständige leere Zeile, sondern nur eine letzte neue Zeile am Ende der letzten Zeile. Unix-Tools (wie das Erbe von Vim) bestehen darauf, dies hinzuzufügen, während das Windows-Betriebssystem nicht so streng ist. Weitere Informationen hierzu finden Sie unter Warum sollten Dateien mit einem Zeilenumbruch enden?

Leider ist es ziemlich komplex zu verhindern, dass Vim die letzte neue Zeile schreibt. Mein PreserveNoEOL-Plugin kann dies tun. Weitere Informationen zu Ansätzen finden Sie unter VIM Deaktivieren der automatischen Zeilenumbruch am Dateiende .

Ingo Karkat
quelle
Nur für zukünftige Leser, dass diese Antwort zu dieser Zeit zwar großartig war, in neueren Versionen von Vim jedoch eine viel einfachere Lösung in einer später veröffentlichten Antwort enthalten ist .
Rich
10

In neuen Versionen von Vim gibt es dafür endlich eine Option

Vim 7.4.785 fügt die Option 'fixeol' hinzu, die deaktiviert werden kann, um fehlende EOL am Ende der Datei automatisch beizubehalten.

(Siehe Wiki-Seite: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

Fügen ~/.vimrcSie in dieser Zeile Folgendes hinzu:

set nofixeol

Relaunch vim, jetzt sollte die neue Zeile am Ende der Datei nicht hinzugefügt werden.

(funktioniert nur seit vim Version 7.4.785)

DarthVanger
quelle
0

Haben Sie versucht, die Datei im Binärmodus zu öffnen? Versuchen Sie es vim -b file_name. Die neue Zeile am Dateiende sollte nicht hinzugefügt werden.

Ali
quelle
Ich habe versucht, dies zu tun und dann xxdzu überprüfen, aber es fügt 0aauch im Binärmodus noch einen Zeilenvorschub ( ) hinzu .
James