Wie ersetze ich in Sublime Text 2 vier Leerzeichen durch eine Registerkarte?


310

Geben Sie hier die Bildbeschreibung ein

Ich möchte alle "vier Leerzeichen", die von einem anderen Texteditor geschrieben wurden, durch Tabulatoren ersetzen. Wie kann ich es tun?

Antworten:


639

Klicken Sie in der unteren rechten Ecke der Statusleiste auf Spaces: N(oder Tab Width: N, wobei N eine Ganzzahl ist), stellen Sie sicher, dass die Tab Width: 4Konvertierung aus vier Leerzeichen erfolgt, und wählen Sie dann Convert Indentation to Tabsaus dem Kontextmenü aus, das beim ersten Klicken angezeigt wird.

Wenn Sie das Gegenteil tun möchten, klicken Sie in der Statusleiste auf den Text Spacesoder Tab Widthund wählen Sie aus demselben Menü aus.

Geben Sie hier die Bildbeschreibung einGeben Sie hier die Bildbeschreibung ein


3
Obwohl alle Antworten richtig sind, ist diese die einfachste! Danke
Mohsen

1
Muss zugeben; es ist :) Ich habe die Kontextmenüs der Statusleiste nie verwendet, ich dachte immer, sie wären statische Indikatoren.
Ekin Koc

2
Sie sind nicht so auffällig, wie sie vielleicht sein sollten. Ich habe ein paar Fehler, die ich für großartige No-Show-Stopper einreichen muss. Ausgezeichneter Herausgeber.
Ncremins

Sie können auch Einstellungen in einer erhabenen Projektdatei verwenden, wenn der Editor diese Einstellung für alle Dateien in einem Projekt speichern soll
Michael

1
@phreakhead Ich bin mir nicht sicher, ob ich Ihre Bedürfnisse vollständig verstehe (erwägen Sie, eine neue Frage zu öffnen?), aber wenn Sie translate_tabs_to_spaces auf false gesetzt haben, wird es beim Tippen (neuer Text) und Drücken der Tabulatortaste ein Tabulatorzeichen sein . Wenn Sie eine Datei haben, die bereits einige Einrückungen als 4 Leerzeichen (anstelle von Tabulatoren) enthält, können Sie die Option am unteren Rand des Menüs im Screenshot verwenden, um Einrückungen in Tabulatoren zu konvertieren.
Michael

106

Wählen Sie alle aus und dann:

Windows / Linux:

Ctrl+ Shift+p

Geben Sie dann "Einzug" ein.


Mac:

Shift+ Command+p

Geben Sie dann "Einzug" ein.


Dies ist am schnellsten, wenn Sie die Hände auf der Tastatur halten. +1
eduncan911

Erstaunlich ... dies gibt Ihnen die Option, Zeilen aus Dateien wie Bootstrap, die mit 2 Zeilen Einzug geliefert werden, neu zu indizieren
Shina

Ich denke, das macht nicht genau das, was er verlangt. Dadurch werden auch die Zeilen neu eingerückt, sodass der Einzug tatsächlich geändert wird, und er fragt nur nach der Konvertierung von Leerzeichen in Tabulatoren. Auf jeden Fall ist es eine gute Antwort, aber in einigen Fällen kann es Ihre Einrückung durcheinander bringen (denken Sie beispielsweise an Vorlagen mit Blade-Einrückung).
Sergi Ramón

Dies ist besser, da es mit kopiertem Code hervorragend funktioniert.
SaurabhM

45

Um Sublime so zu konfigurieren, dass immer Registerkarten verwendet werden, fügen Sie Folgendes zu Einstellungen-> Einstellungen-Benutzer hinzu:

{
    "tab_size": 4,
    "translate_tabs_to_spaces": false
}

Weitere Informationen finden Sie hier: http://www.sublimetext.com/docs/2/indentation.html


5
Dies ist die richtige Antwort, da diese Option auch nach Auswahl von "Einrücken mit Leerzeichen" beim Neustart zurückgesetzt wird.
MVD

1
OP fragte nach der Umkehrung. Was seltsamerweise keine Option gibt. Tab Hasser.
Phreakhead

26

Im Hauptmenü;

View -> Indentation -> Convert Indentation to Tabs / Spaces


9

Führen Sie einen regulären Ausdruck "Suchen" nach \t(Backslash-t, eine Registerkarte) durch und ersetzen Sie ihn durch vier Leerzeichen.

Entweder das Hauptmenü oder das Abstandsmenü in der Statusleiste unten rechts macht dasselbe mit weniger Arbeit.


3
Dies ist die Umkehrung dessen, was das Plakat verlangte
Max Nanasy

3
@ MaxNanasy So ist es. Ich denke, meine Abneigung gegen Tabulatorzeichen ist so tief, dass sie unbewusst ist.
Dave Newton

2
Diese Antwort ist für die gestellte Frage völlig irrelevant. Bitte erwägen Sie, die richtige Antwort zu ändern oder Ihre Antwort auf andere Weise zu löschen.
Randy the Dev

2
@ AndrewDunn "Vollständig"? "Ja wirklich?" Wie könnte die Umkehrung von etwas "völlig" unabhängig sein? Per Definition ist es verwandt und die Lösung ist offensichtlich. Wenn wir nur die Möglichkeit hätten, Antworten zu bearbeiten.
Dave Newton

6

Erstellen Sie eine Tastenkombination für den schnellsten Weg

{ "keys": ["super+alt+t"], "command": "unexpand_tabs", "args": { "set_translate_tabs": true } }

Fügen Sie dies zu Einstellungen> Tastenkombinationen (Benutzer) hinzu, wenn Sie super+ alt+ drücken t, werden Leerzeichen in Tabulatoren konvertiert


2

Sie können eine einfache Schlüsselbindung hinzufügen:

Präferenz> Schlüsselbindung - Benutzer:

[
    { "keys": ["super+l"], "command": "reindent"},
]

Wählen Sie nun die Zeile oder Datei aus und drücken Sie: Befehl + l


0

Wenn Sie diese Änderung rekursiv auf alle Dateien in einem Directoy anwenden möchten, können Sie das Modal Suchen> In Dateien suchen ... verwenden:

Suchen Sie in Dateien modal

Bearbeiten Ich habe es im Bild nicht hervorgehoben, aber Sie müssen auf die Schaltfläche. * Links klicken, damit Sublime das Suchfeld als regulären Ausdruck / Bearbeiten interpretiert

Bearbeiten 2 Ich habe es versäumt, dem regulären Ausdruck einen Anfang des String-Ankers hinzuzufügen. Ich korrigiere das unten und werde das Bild aktualisieren, wenn ich eine Chance bekomme / Bearbeiten

Der reguläre Ausdruck im Feld Suchen ^[^\S\t\n\r]{4}stimmt mit Leerzeichen in 4er-Gruppen überein (ausgenommen Tabulatoren und Zeilenumbrüche). Das Ersetzungsfeld \tgibt an, dass Sie sie durch Registerkarten ersetzen möchten.

Wenn Sie auf die Schaltfläche rechts neben dem Feld "Wo" klicken, werden Optionen angezeigt, mit denen Sie Ihre Suche gezielt ersetzen können. Add FolderMit dieser Option können Sie den Ordner auswählen, aus dem Sie rekursiv suchen möchten. Mit dieser Add Include FilterOption können Sie die Suche auf Dateien einer bestimmten Erweiterung beschränken.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.