EOL-Konvertierung in Notepad ++

113

Wenn ich Dateien von einem Unix-Server auf meinem Windows-Computer öffne, wird sie gelegentlich aus Macintosh EOL konvertiert, und wenn ich sie erneut bearbeite / speichere, funktionieren sie auf dem Unix-Server nicht ordnungsgemäß. Ich verwende Notepad ++ nur zum Bearbeiten von Dateien von diesem Unix-Server. Gibt es also eine Möglichkeit, ein Makro zu erstellen, das EOL automatisch in das Unix-Format konvertiert, wenn ich eine Datei öffne?

Jeff
quelle
Mögliches Duplikat von Change EOL für mehrere Dateien auf einmal
Navid EMAD
1
Möglicherweise liegt ein Problem mit dem von Ihnen verwendeten FTP-Programm vor. Zum Beispiel verwende ich WinSCP, um auf einen Unix-Server zu remote zu wechseln. Notepad ++ ist als Standardeditor festgelegt, aber ich musste in die Einstellungen von WinSCP gehen und den Übertragungsmodus auf einstellen Binary, um die Zeilenenden beizubehalten. Daher können Sie möglicherweise Ihr FTP / SCP / etc-Programm neu konfigurieren, um die Dateien auf andere Weise zu übertragen.
Slicktrick

Antworten:

199

Diese Funktionalität ist bereits in Notepad ++ integriert. Wählen Sie im Menü "Bearbeiten" "EOL-Konvertierung" -> "UNIX / OSX-Format".

Screenshot der Option für noch schnelleres Auffinden (oder verschiedene Sprachversionen)

Sie können die Standard-EOL auch in Notepad ++ über "Einstellungen" -> "Einstellungen" -> "Neues Dokument / Standardverzeichnis" festlegen und dann im Feld "Format" die Option "Unix / OSX" auswählen.

Nate Allen
quelle
7
Ich kenne die Konvertierung im Bearbeitungsmenü und die von Ihnen genannten Einstellungen gelten nur für neue Dokumente. Ich möchte die Konvertierung automatisch für jede Datei durchführen, die ich öffne (oder jede Datei, die ich speichere)
Jeff
Das Problem ist, wenn ich eine vorhandene Unix-Datei öffne, ist das "EOL Conversion" -> UNIX / OSX-Format ausgegraut. Notepad ++ ist zu frustrierend für die Verwendung mit UNIX-Dateien, daher verwende ich Notetab Lite, mit dem ich alle Dateien als UNIX speichern kann, nicht nur neue.
Aus dem Gold
3
@OffTheGold Die UNIX EOL-Option ist ausgegraut, da es sich um die aktuelle Auswahl handelt.
Blakeoft
Direkt am. Vielen Dank ab November 2017 über Google.
SDsolar
Das funktioniert bei mir nicht. Ich wähle weiterhin "EOL Conversion -> Unix", aber es macht nichts. Ich gehe zurück ins Menü und sehe, dass Windows die ausgegraute (daher ausgewählte?) Option ist, also klicke ich erneut auf Unix. Ich habe sogar versucht, meinen gesamten Text zuerst auszuwählen, falls er nur bei der Auswahl funktioniert, und dann erneut Unix ausgewählt. Trotzdem macht es nichts.
Loduwijk
16

Verwenden Sie in Notepad ++ Alle durch reguläre Ausdrücke ersetzen. Dies hat gegenüber dem Konvertierungsbefehl im Menü den Vorteil, dass Sie den gesamten Ordner bearbeiten können, ohne jede Datei öffnen oder per Drag & Drop verschieben zu müssen (bei mehreren hundert Dateien wird dies merklich langsamer). Außerdem können Sie den Platzhalterfilter für Dateinamen festlegen.

(\r?\n)|(\r\n?)

zu

\n

Dies passt jedes mögliche Zeilenendmuster (einzeln \ r, \ n oder \ r \ n) zurück zu \ n. (Oder \ r \ n, wenn Sie in den Windows-Stil konvertieren)

So bearbeiten Sie mehrere Dateien:

  • Verwenden Sie "Alle in allen geöffneten Dokumenten ersetzen" auf der Registerkarte "Ersetzen". Sie müssen zuerst alle Dateien per Drag & Drop in Notepad ++ ziehen. Es ist gut, dass Sie die Kontrolle darüber haben, welche Datei bearbeitet werden soll, aber es kann langsam sein, wenn mehrere hundert oder tausend Dateien vorhanden sind.
  • "In Dateien ersetzen" auf der Registerkarte "In Dateien suchen" nach einem Dateifilter Ihrer Wahl, z. B. * .cpp * .cs unter einem angegebenen Verzeichnis.
Wappenull
quelle
Dies kann zum Verlust von EOLs führen, da ein \ r \ n \ r \ n durch ein einzelnes \ n ersetzt wird. Meiner Ansicht nach.
Sunspawn
Bestätigen Sie, dass in Notepad ++ 6.9.1 gearbeitet wurde. Es wird vorwärts suchen, daher nicht rekursiv die dahinter liegenden ersetzen.
Wappenull
Bei der Beantwortung von: "Dies kann zum Verlust von EOLs führen, da ein \ r \ n \ r \ n durch ein einzelnes \ n ersetzt wird." >> Dies wird nicht der Fall sein, da | verwendet wird (oder) Operator zwischen 2 möglichen Gruppen.
Wappenull
3

Ich öffne Dateien "direkt" von WinSCP aus, wodurch die Dateien in Notepad ++ geöffnet werden. Ich hatte PHP-Dateien auf meinem Linux-Server, die immer im Mac-Format geöffnet wurden, egal was ich getan habe :-(

Wenn ich die Datei heruntergeladen und dann von lokal (Windows) geöffnet habe, war sie als Dos / Windows geöffnet .... hmmm

Die Lösung bestand darin, die lokale Datei per EOL in das "UNIX / OSX-Format" zu konvertieren, zu speichern und dann hochzuladen.

Wenn ich die Datei jetzt direkt vom Server aus öffne, wird sie als "Dos / Windows" geöffnet :-)

MrCalvin
quelle
1

Abhängig von Ihrem Projekt sollten Sie EditorConfig ( https://editorconfig.org/ ) verwenden. Es gibt ein Notepad ++ - Plugin, das eine .editorconfig lädt, in der Sie "lf" als obligatorisches Zeilenende angeben können.

Ich habe erst angefangen, es zu verwenden, aber es ist bisher schön, und Open Source-Projekte, an denen ich gearbeitet habe, enthalten seit Jahren .editorconfig-Dateien. Die Einstellung "EOL-Konvertierung" wird nicht geändert, daher kann sie etwas verwirrend sein. Wenn Sie jedoch "Ansicht> Symbol anzeigen> Zeilenende anzeigen" verwenden, können Sie sehen, dass LF anstelle von CRLF hinzugefügt wird, selbst wenn "EOL-Konvertierung" "und die untere untere Ecke zeigt etwas anderes (zB Windows (CR LF)).

D. Cook
quelle