Sublime Text 2 Zeilenenden korrigieren?

177

Hier ist meine Settings - UserKonfiguration:

{
    "auto_indent": true,
    "color_scheme": "Packages/Color Scheme - Default/Twilight.tmTheme",
    "default_line_ending": "LF",
    "detect_indentation": true,
    "font_size": 10.0,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "trim_automatic_white_space": true,
    "use_tab_stops": true
}

Kommentar zur default_line_endingOption sagt: Kommentar zur Option default_line_ending

Wenn ich eine neue Datei erstelle, überprüfe ich die hier endende Zeile:

Überprüfen Sie das Zeilenende

Wie Sie sehen, ist es immer noch Windows ... Irgendwelche Ideen?

Mintobit
quelle
Haben Sie versucht, auf "Unix" zu klicken, zu schließen und dann wieder zu öffnen?
Preet Kukreti
@PreetKukreti Ja. Nach dem erneuten Öffnen ist es wieder "Windows". Es funktioniert nur für die aktuelle Datei, nicht für die neue Datei.
Mintobit
1
@ an1zhegorodov hast du die datei schon mal gespeichert? das hat bei mir funktioniert ...
charlysisto
1
Ja. Nach dem Speichern der Datei hat es auch bei mir funktioniert.
Pierre Guilbert

Antworten:

199

Der Kommentar besagt

// Determines what character(s) are used to terminate each line in new files.
// Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
// 'unix' (LF only).

Sie stellen ein

"default_line_ending": "LF",

Sie sollten einstellen

"default_line_ending": "unix",

Leigh
quelle
1
Ich habe das gleiche Problem, aber ich "default_line_ending": "unix"stelle richtig ein , ich weiß nicht warum zum Teufel das nicht funktioniert! Es macht mich wahnsinnig! Ich habe ein wenig recherchiert und anscheinend hat es keine nützliche Lösung.
Acrespo
@acrespo Sind Sie sicher, dass es nicht von einer anderen Einstellungsdatei überschrieben wird? Sublime hat viele davon :) - Wenn Sie eine Art von Zeile angegeben haben, die in Ihren syntaxspezifischen Einstellungen endet, werden die Benutzereinstellungen überschrieben, die wiederum die globalen Einstellungen überschreiben
Leigh
10
Die Einstellung "default_line_ending": "unix" funktioniert einwandfrei bei neuen Dateien, jedoch nicht bei vorhandenen (älteren) Dateien. Weiß jemand, wie man dieses Verhalten ändert?
Wahrsager
11
Dies kann nur manuell erfolgen, wäre sehr hilfreich, wenn dies automatisiert wäre. Sie können dies ändern, wie im Bild oben zu sehen-> Zeilenenden-> Unix @soothsayer
A Star
5
@soothsayer Wählen Sie für vorhandene Dateien den gesamten Text aus und dann view-> line endings-> unix. Speichern Sie dann das Dokument.
AGS
9

Das EditorConfig-Projekt ( Github-Link ) ist eine weitere sehr praktikable Lösung. Ähnlich wie bei sftp-config.json und .sublime-project / workspace wird das Plugin jedes Mal, wenn Sie eine .editorconfig-Datei entweder im Projektordner oder in einem übergeordneten Ordner einrichten, jedes Mal, wenn Sie eine Datei in dieser Verzeichnisstruktur speichern, das Plugin einrichten Wenden Sie die Einstellungen in der Punktdatei automatisch an und automatisieren Sie einige verschiedene Dinge für Sie. Einige davon speichern Zeilenenden im Unix-Stil, fügen Zeilenumbrüche am Dateiende hinzu, entfernen Leerzeichen und passen die Einstellungen für Einrückungsregisterkarten / Leerzeichen an.


SCHNELLES BEISPIEL

Installieren Sie das EditorConfig-Plugin mithilfe der Paketsteuerung in Sublime. Platzieren Sie dann eine Datei mit dem Namen  .editorconfigin einem übergeordneten Verzeichnis (auch Ihr Zuhause oder das Stammverzeichnis, wenn Sie möchten) mit folgendem Inhalt:

[*]
end_of_line = lf

Das ist es. Diese Einstellung wendet automatisch Zeilenenden im Unix-Stil an, wenn Sie eine Datei in dieser Verzeichnisstruktur speichern. Du kannst mehr coole Sachen machen, z. Schneiden Sie unerwünschte nachgestellte Leerzeichen oder fügen Sie am Ende jeder Datei eine nachfolgende neue Zeile hinzu. Weitere Informationen finden Sie in der Beispieldatei unter https://github.com/sindresorhus/editorconfig-sublime .

# editorconfig.org
root = true

[*]
indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

Die root = trueZeile bedeutet, dass EditorConfig nicht nach anderen .editorconfigDateien in den oberen Ebenen der Verzeichnisstruktur sucht .

Nathan C.
quelle
Unzureichend aggressiv. Ich brauche das Plugin, um die Kette von Leuten zu identifizieren, die dazu führen, dass die Datei crlf hat, und um jedem von ihnen ins Gesicht zu schlagen. Und dann speichere es mit lf.
ArtOfWarfare
Danke, das war mein Problem, ich hatte dieses Plugin installiert und es nahm die falsche Konfiguration aus der .config-Datei
Luke Robertson
1

Zeilenenden von LF nach CRLF ändern:

öffne Sublime und folge den Schritten: -

1 Drücken Sie Strg + Umschalt + P und installieren Sie dann die Paketnamenzeile, um die Endungen zu vereinheitlichen

Drücken Sie dann erneut Strg + Umschalt + p

2 Geben Sie im leeren Eingabefeld "Line Unify Ending" ein.

3 Drücken Sie zweimal die Eingabetaste

Sublime kann manchmal einfrieren und infolgedessen die Zeilenenden von LF zu CRLF ändern

parth sharma
quelle
1

Der einfachste Weg, alle Dateien eines Projekts gleichzeitig (Stapel) zu ändern, ist das Line Endings Unify- Paket:

  1. Ctrl+ Shift+ PTyp inst + wählen Paket installieren .
  2. Geben Sie Line End ein und wählen Sie Line Endings Unify .
  3. Nach der Installation Ctrl+ Shift+ P+ geben Sie end + ein und wählen Sie Line Endings Unify .
  4. ODER (statt 3.) Kopie:

    {
     "keys": ["ctrl+alt+l"],
     "command": "line_endings_unify"
    },
    

    zum Benutzer- Array (rechter Bereich nach dem Öffnen [) in den Einstellungen -> Tastenkombinationen + drücken Sie Ctrl+ Alt+ L.

Wie in einer anderen Antwort erwähnt :

  • Das CR- Zeichen ( Carriage Return ) ( 0x0D, \r) [...] Frühe Macintosh-Betriebssysteme (OS-9 und früher).

  • Das Zeilenvorschubzeichen ( LF ) ( 0x0A, \n) [...] UNIX-basierte Systeme (Linux, Mac OSX)

  • Die EOL- Sequenz ( End of Line ) ( 0x0D 0x0A, \r\n) [...] (Nicht-Unix: Windows, Symbian OS).

Wenn Sie über node_modules , build oder andere automatisch generierte Ordner verfügen , löschen Sie diese, bevor Sie das Paket ausführen .

Wenn Sie das Paket ausführen:

  1. Sie werden unten aufgefordert, auszuwählen, welche Dateierweiterungen in einer durch Kommas getrennten Liste durchsucht werden sollen (geben Sie die einzigen ein, die Sie benötigen, um das Ersetzen zu beschleunigen, z js,jsx. B. ).
  2. Dann werden Sie gefragt, welche Eingabezeile verwendet werden soll , z. B. wenn Sie einen LF- Typ benötigen \n.
  3. Drücken Sie ENTERund warten Sie, bis ein Warnfenster mit LineEndingsUnify Complete angezeigt wird .
CPHPython
quelle