Wie zwinge ich Sublime Text, zwei Leerzeichen pro Tab einzurücken?


504

Gibt es eine Möglichkeit, Sublime Text 2 zu zwingen, beim Arbeiten mit Ruby-Dateien immer zwei Leerzeichen pro Tab einzurücken?

Ich weiß, dass Einrückungen unter der view -> indentationMenüoption eingestellt werden können, aber sie bleiben nicht erhalten. Jedes Mal, wenn ich eine neue Datei öffne und die Tabulatortaste drücke, werden vier Leerzeichen wiederhergestellt.


Sublime ist standardmäßig etwas anders / seltsam. Obwohl die Datei möglicherweise mit mehreren Leerzeichen gespeichert wird, löscht der Editor selbst beide Leerzeichen, wenn er sie als Einrückung identifiziert.
Kalk

Antworten:


899

Wenn Sie es für alle Dateien möchten , gehen Sie zu Preferences -> Settings - Default/User. Wie aus mehreren Kommentaren unten hervorgeht, können sich die syntaxspezifischen Einstellungen jedoch nur auf die von Ihnen ausgewählten Sprachen beschränken.

Um diese Konfiguration auf Ruby-Dateien zu beschränken, öffnen Sie zuerst eine Ruby-Datei im Editor und gehen Sie dann zu Preferences -> Settings - Syntax Specific. Dies sollte ein Einstellungsfenster mit dem Namen öffnenRuby.sublime-settings

Speichern Sie diese Einstellungen:

{
  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false
}

Wiederholen Sie diesen Vorgang für alle anderen Syntaxtypen, indem Sie eine Datei dieses Typs öffnen und zu den Einstellungen zurückkehren, um die richtige Einstellungsdatei für diese Syntax zu öffnen.

Ich habe dies so bearbeitet, dass die Zeile "detect_indentation" gemäß den Anforderungen in den Kommentaren enthalten ist. Ich habe zuvor die Standardeinstellung / den Benutzer verwendet, um meine Registerkartengröße festzulegen, und habe die Registerkartenerkennung nicht benötigt. Ob dies jedoch an der globalen Konfiguration oder an der Tatsache liegt, dass ich selten Dateien mit Registerkarten geöffnet habe, weiß ich nicht.

Ein Neustart sollte nicht erforderlich sein, obwohl dies in einigen Fällen der Fall sein kann.


11
Ab Build 2181. Sie können die Einstellungen unter Einstellungen -> Einstellungen - Standard / Benutzer konfigurieren. Am besten in den Benutzereinstellungen, da dies der beabsichtigte Ansatz ist.
Kevin Jalbert

20
@ KevinJalbert (und DGM) Eigentlich sollte er das in syntaxspezifische Einstellungen setzen, damit es nur Ruby-Dateien betrifft.
Paul Hoffer

6
Beachten Sie, dass der Wert wahr und nicht "wahr" ist.
EarthmeLon

1
Dies ist besonders nützlich, da in der eigenen Website-Dokumentation von Sublime Text fälschlicherweise vorgeschlagen wird, camelCase anstelle von Unterstrichen in den Einstellungsschlüsseln zu verwenden. ( sublimetext.com/docs/indentation )
Eric Goldberg

@EricGoldberg - ich bin sicher , dass nicht , wie Sie zu dieser Dokumentation Seite bekommen, aber wenn Sie gehen sublimetext.com > Support und unter Dokumentation, klicken Sie auf den Sublime Text 2 Link, werden Sie gebracht sublimetext.com/docs/2 - Von dort aus finden Sie die Dokumente zum Einrücken, und die Einstellungsschlüssel verwenden den Unterstrich korrekt: sublimetext.com/docs/2/indentation.html
9.

166

Wenn Sie die von Ihnen gewählte Registerkarteneinstellung erzwingen möchten und ignorieren möchten, was wahrscheinlich bereits in der Datei vor sich geht, sollten Sie sie detect_indentationin Ihre Konfiguration einbeziehen (Ihre Benutzereinstellungen oder Ihre syntaxspezifischen Einstellungen, je nachdem, ob Sie sie global oder pro Dateityp wünschen):

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}

Danke für den Tipp! Ohne detect_indentationausgeschaltet zu werden, bekam ich ein sehr seltsames Verhalten (es erkannte die Einrückung falsch und verwendete diese anstelle dessen, was ich in meinen Einstellungen angegeben hatte).
JacobEvelyn

Dies in den Standardeinstellungen zu tun, hat bei mir funktioniert. Stellen Sie sicher, dass Sie prüfen, ob die Einstellung bereits vorhanden ist. Wenn Sie es hinzufügen und es später als wahr deklariert wird, bleibt es als wahr festgelegt.
David

3
Beachten Sie, dass Änderungen an den Standardeinstellungen durch Aktualisierungen von Sublime Text usw. überschrieben werden. Änderungen an den Benutzereinstellungen werden nicht überschrieben.
James Chevalier

6
VIELEN DANK!! "detect_indentation":falseist kritisch, sonst werden die anderen Einstellungen ignoriert. endlich!
Zzzeek

Es ist ein guter Punkt, aber Ihr Beispiel ist unangemessen eingerückt ;-)
snow6oy

88

Sie können dies auch mit dem Textlink in der unteren Leiste von Sublime Text 2 (auf der rechten Seite) tun, auf dem standardmäßig "Tab Size 4" steht. Klicken Sie darauf, und ein Fenster mit Optionen zum Festlegen der Tab-Größe aus 1 Leerzeichen wird angezeigt Bis zu 8 Leerzeichen und enthält Optionen zum Konvertieren von Tabulatoren in Leerzeichen und Leerzeichen in Tabulatoren.

Sieht aus wie das:

Registerkartenoptionen in erhabenem Text 2


3
Toller Tipp, aber wissen Sie, ob dies zu einer klebrigen Einstellung wird? Das Ändern des Einzugs in der oberen Menüleiste gilt beispielsweise nur für die aktuell geöffnete Datei und nicht für andere, was mein ursprüngliches Problem war.
Mohamad

5
Das funktioniert nicht . Es ist ein guter Tipp, aber nicht klebrig: Durch Schließen und erneutes Öffnen der Datei (oder Öffnen einer anderen Datei) wird der Einzug auf vier Leerzeichen zurückgesetzt.
Mohamad

1
Ja, es ist nicht klebrig, es ist pro Datei. Sie müssen zu den Einstellungen von Sublime Text gehen, um Ihre Standardeinstellung für Tabulatoren / Leerzeichen festzulegen.
Taskism

Dies hat mein Problem in Sublime Text 3 behoben. Vielen Dank!
Adrian

29

Kann ich EditorConfig vorschlagen ? Es gibt eine Erweiterung zum automatischen Laden und Anwenden der .editorconfigDatei. Dann erstellen Sie einfach eine im Stammverzeichnis Ihres Projekts.

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

Auf diese Weise sind Ihre Einstellungen projekt- und dateispezifisch, wenn Sie für jedes Projekt oder jede Sprache unterschiedliche Stile verwenden.


So .editorconfigsieht mein eigenes aus.

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

2
Ich wollte dies nicht zu einer globalen Veränderung machen. Dies war also die einzige Lösung, die funktionierte. Ich habe einige Nachforschungen über EditorConfig angestellt und es sieht für IDEs, die es unterstützen, sehr gut aus.
Neil Monroe

1
Es ist einfach so passiert, dass ich bereits eine .editorconfig in meinem Projekt hatte und es nicht einmal wusste. (
Angular

9

Ich benutze das Stupid Indent- Paket.

Install Package -> Stupid Indent

Preferences-> Package Settings-> Stupid Indent->Setting-Users

Kopieren Sie die Einstellungen (des RubyTeils) in.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}

yup das ist was ich brauche: D
Dragutescu Alexandru

Genial. Vielen Dank :)
krithikaGopalakrisnan

WARNUNG . Die Standardeinstellungen und benutzerdefinierten Einstellungen für dumme Einrückungen erzwingen das Überschreiben der Einstellungen für Sublime Text und EditorConfig . Vielen Dank.
15аша Черных

1

Ich folgte den vorherigen Antworten, einschließlich des Hinzufügens der Zeile detect_indentation, und meine Tabulatoren waren immer noch fünf Leerzeichen. Dann wurde mir klar, dass sich die Auswahl Preferences -> Settings -> More -> Syntax Specific -> Useraus einer Ruby-Datei Ruby on Rails.sublime-settingsfür mich öffnete , nicht für mich Ruby.sublime-settings.

Ich habe meine Ruby on Rails.sublime-settingsDatei in umbenannt Ruby.sublime-settings. Endlich haben zwei Leerzeichen funktioniert! Ich habe die gleichen Einstellungen vorgenommen Ruby on Rails.sublime-settings, nur um sicherzugehen.

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.