Warum erstellt vim Dateien mit DOS-Zeilenenden?

15

ich habe

set fileformat=unix

.vimrcWenn ich in my eine Datei erstelle vim(die in Cygwin ausgeführt wird), werden weiterhin Dateien im DOS-Format erstellt, und ich muss sie durchlaufen dos2unix, um sie zu bereinigen. (Ich glaube , ich weiß nicht wirklich haben zu, da Git sie für mich reinigt, aber es nervt mich nur zu Tod , dass ein Unix - Texteditor, die ich habe speziell Unix - Zeilenende angewiesen zu verwenden, wird sie mit zusätzlichem Müll verschmutzt .)

Warum sollte das passieren? Wie kann ich es reparieren? (Und mit "reparieren" meine ich nicht etwas, bei dem ich jede Datei einzeln konvertieren muss. Das ist keine Korrektur. Das ist, was total kaputt ist.)

Bilderstürmer
quelle
Ich würde wetten, dass dies ein Cygwin-Problem ist. Es gibt eine Option in Cygwin, um den Zeilenende-Stil zu wählen, aber ich habe keine Beweise dafür gesehen, dass es tatsächlich funktioniert. Meine Universität verwendet Eclipse mit cygwin für die GNU-Compiler-Sammlung und ich stieß auf ein seltsames Verhalten, bei getlinedem sich herausstellte, dass cygwin etwas Seltsames tut. Resultierte in einem CR+LFanstelle des Unix LFoder sogar eines DOS- Stils LF+CR. Sie sollten überprüfen, welchen Zeilenendestil Sie in cygwin aber YMMV konfiguriert haben. Siehe auch cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt
@Matt: DOS / Windows verwendet CR+LF, nicht LF+CR.
Echristopherson
Ich hatte Angst, diese auszutauschen, wenn ich nicht doppelt nachprüfe, über ein Semester vergangen bin, seit ich dieses Problem hatte. Die Zeilenenden waren unterschiedlich, als ich in cygwin und an der DOS-Eingabeaufforderung lief, und ich erinnere mich, dass ich davon überzeugt war, dass es rückwärts war von dem, was Sie von DOS erwarten würden, aber wie Sie sehen können, sind sie für mich leicht zu wechseln.
Matt
Bist du sicher, dass diese .vimrc überhaupt gelesen wird? Versuchen Sie, einen absichtlichen Fehler zu machen, und prüfen Sie, ob vim ihn aufgreift.
ein CVn
@ MichaelKjörling: ja, ich habe es getestet und es wird gelesen. Ich habe meine set numberZeile auskommentiert, und sie wurde wirksam, und die Kommentare wurden entfernt, und das wurde wirksam. Ich fügte auch "bla bla bla" am unteren Rand hinzu und bekam "Drücken Sie die EINGABETASTE oder geben Sie den Befehl ein, um fortzufahren", wenn ich etwas öffnete, aber seltsamerweise gab es vorher keine Fehlermeldung (es sei denn, es waren schwarze Buchstaben auf schwarzem Hintergrund).
Iconoclast

Antworten:

21

Nur die Einstellung fileformatist abhängig von einigen Faktoren möglicherweise nicht ausreichend. Versuche dies:

set fileformat=unix
set fileformats=unix,dos
"set nobinary

Um zu verstehen, was diese tun, werfen Sie einen Blick auf :help fileformatsusw.

Ich denke, ich bin in der Lage, Ihre Probleme zu reproduzieren, indem ich vim.exedie von gitin Windows bereitgestellten verwende. Die Verwendung der obigen Einstellungen hat das Problem für mich behoben. In dem Beispiel set nobinaryist es auskommentiert, weil ich glaube, dass Sie es nicht brauchen. Ich habe es dort als Tipp gelassen, der hilfreich sein kann, falls Sie weitere Nachforschungen anstellen müssen.

janos
quelle