Vi unter Linux: zeige ^ M Zeilenenden für DOS-Dateien

9

Wenn Sie unter Solaris eine Datei in vi mit Windows-Zeilenenden öffnen, wird dies am Ende jeder Zeile als ^ M angezeigt.

Unter Linux ist vi cleverer und versteht das Windows-Dateiformat und zeigt ^ M nicht an.

Gibt es eine Einstellung, mit der Linux vi sich in dieser Hinsicht wie Solaris verhält?

Ein häufiges Problem für uns ist das Kopieren eines Shell-Skripts von einer (Windows) -Dev-Box und das Vergessen, es mit dos2unix zu versehen. Unter Solaris ist das Problem offensichtlich, sobald Sie die Datei öffnen, unter Linux jedoch nicht.

Vielen Dank.

sss
quelle
Unter Linux ist vi normalerweise Bram Moolenaars vim , ich gehe davon aus , dass der vi unter Solaris der Bill Joy vi ist , original, authentisch, aber weniger fähig.
RedGrittyBrick
vimNormalerweise sehe ich auf meiner standardmäßig keine ^M, aber manchmal befindet sich eine am Ende der Datei.
Trysis

Antworten:

9

Versuchen Sie es :set ffs=unixbeim Starten von vi (oder in vimrc als Standard), bei dem alle CR-Zeichen als angezeigt werden sollen ^M.

vi errät automatisch, welches Format verwendet werden soll, basierend darauf, ob es auf Zeilen stößt, die nur mit LF oder beiden CR / LF enden.

Garrett
quelle
1
@RedGrittyBrick - Auf meinem System :set listzeigt $am Ende aller Zeilen (Unix & DOS - Format), also nicht zwischen den beiden zu unterscheiden hilft.
SSS
@sss: Mein Fehler, ich werde den Kommentar löschen.
RedGrittyBrick
2
@gman - dieser Befehl hat bei mir nicht genau funktioniert - ich habe Not an editor command: ffs=unix- aber mich auf den richtigen Weg gebracht. Laufen :set ffs=unixmit der Datei in vi geöffnet hat nicht funktioniert - kein Fehler, aber nichts ist passiert. Ich habe set ffs=unixmeine .vimrc-Datei eingefügt und das hat funktioniert.
SSS
Ich habe genau das Gleiche erlebt wie @sss
SSH
Dadurch wird die sorgfältig vorbereitete Benutzerkonfiguration beschädigt. Ich möchte höchstwahrscheinlich ffsgenau so, wie es ist. Aber siehe die Antwort von @wisbucky.
Fork0
2

So zeigen Sie die Zeilenenden für die aktuelle Datei an:

:e +ff=unix

Dies zwingt das Dateiformat zu Unix, das CRals gerendert wird^M


Um diese Einstellung dauerhaft zu machen, fügen Sie Folgendes hinzu ~/.vimrc:

set ffs=unix

Beachten Sie, dass die Einstellung von .vimrc ffsnicht ist ff.

weises Glück
quelle
Das sollte es sein :e ++ff=unix, glaube ich.
fork0