Was bedeutet die Noeol-Anzeige am Ende einer Vim-Editiersitzung?

Antworten:

35

Unix-Editoren mögen viund vimwerden immer newlines ( \n) am Ende jeder Zeile einfügen - insbesondere einschließlich der letzten Zeile. Befindet sich eolin der letzten Zeile kein Zeilenende ( ), ist dies eine ungewöhnliche Situation, und die Datei wurde mit Sicherheit nicht mit einem Standard-UNIX-Editor erstellt.

Diese ungewöhnliche Situation wird Ihnen durch die [noeol]Markierung im vimEditor angezeigt. Andere Editoren haben wahrscheinlich ähnliche Flags und Benachrichtigungen.

Mei
quelle
In emacs, bewegen Sie den Cursor an das Ende der Datei (letzte Zeile, nach dem letzten Zeichen) und ausführen kill-line, erhalten Sie tatsächlich das Löschen von oben eol.
Yeow_Meng
1
Und einige Dienste jammern und beschweren sich und starten aufgrund von Fehlern nicht, weil es bei EOF keine EOL gibt
ivanivan
20

Dass die letzte Zeile in der Datei keine neue Zeile enthält (\ n)

Eintopf
quelle
2
@ Bon Ami: Einige Programme benötigen beim Lesen Ihrer Textdatei \ndas Zeilenende, um sie als abgeschlossene Zeile zu betrachten (mit einem nachgestellten Zeilenumbruchzeichen). Das folgende Beispiel zeigt eine Datei , die wie eine aussehen kann komplett auf einen flüchtigen Blick in einen Texteditor Linie, aber wctut nicht condider es als Linie: printf "x">"file-no-newline"; wc -l <"file-no-newline"- Outpute ist: 0 .. die noeol ist nur eine visuelle Hilfe Sie das wissen zu lassen , Status ..
Peter.O
2

Dies bedeutet, dass das Betriebssystem, unter dem Sie die Datei anzeigen, das Zeilenende der Datei nicht erkennen kann (sofern überhaupt welche vorhanden sind). Dies passiert manchmal, wenn Sie Dateien zwischen Betriebssystemen verschieben (z. B. von MS nach * nix os).

Wenn die Datei in vim einen Windows-Wagenrücklauf hat ^M", können Sie dies mit dem folgenden Befehl beheben: in vim do:

:%s/^M/\r/g

Bedeutung:

%      => select the whole buffer
s      => Search
/^M/   => find Windows Carrage return.
/\r/   =>  Replae it with *nix carrage return

Hinweis: In Mac OX ^M is ctl+v && ctrl+m

zee
quelle
-4

Es ist 'NO EOL' - keine Anzeige für das Zeilenende . Sehr hilfreich, wenn Sie am Ende eine sehr große Datei öffnen (> 1 GB). Vim versucht das alles in einer Linie zu ziehen. Diese Anzeige hilft mir, die Datei schnell zu schließen, bevor mein Betriebssystem kaputt geht.

Srikar Appalaraju
quelle
2
Ich bin mir ziemlich sicher , dass das ist nicht das, was diese Flagge bedeutet ...
fouric