Auto-Paarung & intelligente Einrückung¶
Während Sie tippen, schließt der Editor Klammern und Anführungszeichen für Sie, behält Ihre Einrückung auf neuen Zeilen bei, öffnet Blöcke zwischen geschweiften Klammern und wendet eine konsistente Einrückungseinheit (Tabs oder Leerzeichen) gleichermaßen auf die Tab-Taste, das Ausrücken mit Backspace und die automatische Einrückung an. Alles hier ist eine eingebaute Funktion des Editors; die zugehörigen Menübefehle und die Einstellung des Einrückungsstils stammen aus dem mitgelieferten Einrückungs-Plugin.
Sie soll unsichtbar sein — sie reagiert nur auf das gerade getippte Zeichen und hält sich überall zurück, wo sie stören würde (in Kommentaren und Zeichenketten, vor vorhandenen Wörtern, beim falschen Partnerzeichen).
Auto-Paarung von Klammern und Anführungszeichen¶
Das Tippen einer öffnenden Klammer oder eines Anführungszeichens fügt den Partner ein und lässt den Cursor zwischen beiden stehen:
| Sie tippen | Sie erhalten | Cursor |
|---|---|---|
( |
() |
dazwischen |
[ |
[] |
dazwischen |
{ |
{} |
dazwischen |
" |
"" |
dazwischen |
' |
'' |
dazwischen |
Ein paar Regeln verhindern, dass das lästig wird:
- Überschreiben (type-over). Das Tippen eines schließenden Zeichens, wenn
dasselbe Zeichen bereits rechts vom Cursor steht, springt darüber
hinweg, statt ein zweites einzufügen — wer also durch
()oder""hindurchtippt, erhält ein einziges, ausgeglichenes Paar. - Keine Paarung vor einem Wort. Ein Öffner wird nur vervollständigt, wenn
das nächste Zeichen ein Leerraum, ein Schließer oder das Zeilenende ist —
ein
(direkt vor vorhandenem Text schleust also kein verirrtes)mitten hinein. - Apostroph-bewusste Anführungszeichen. Ein
'direkt nach einem Buchstaben (wie indon't) wird als Apostroph behandelt und nicht gepaart. Anführungszeichen paaren sich nur in neutralem Kontext (Token-Anfang, nach Leerraum oder einem Operator). - Spitze Klammern nur in Markup.
<…>paaren sich nur in HTML-/XML-Dokumenten, wo<ein Tag öffnet. Überall sonst ist<ein Vergleichs- oder Shift-Operator und bleibt unangetastet.
Eine Auswahl umschließen (type-to-wrap)¶
Ist Text ausgewählt, ersetzt ein getippter Öffner die Auswahl nicht — er umschließt sie:
- Funktioniert mit
([{"'(nicht mit<— außerhalb von Markup ist es ein Operator). - Der innere Text bleibt danach ausgewählt, sodass sich Umschließungen
verketten lassen: Tippen Sie
(und dann"und Sie erhalten("value"). - Mit mehreren Cursorn wird jede Auswahl unabhängig umschlossen — und die gesamte Operation ist ein Rückgängig-Schritt.
Ein Paar löschen¶
Ein Backspace mit dem Cursor zwischen einem leeren automatisch
eingefügten Paar ((|), [|], {|}, "|", '|' oder <|> in Markup)
löscht beide Zeichen in einem Schritt — eine Auto-Paarung lässt sich also
mit einem einzigen Tastendruck zurücknehmen. Sobald zwischen dem Paar Inhalt
steht, verhält sich Backspace normal.
Intelligente Einrückung bei Enter¶
Ein Druck auf Enter übernimmt den führenden Leerraum der aktuellen Zeile auf die neue Zeile — Sie bleiben auf derselben Tiefe, ohne Tabs oder Leerzeichen erneut zu tippen:
- Einrückung beibehalten. Die neue Zeile beginnt mit derselben Einrückung wie die verlassene Zeile.
- Eine Ebene öffnen. Endet die verlassene Zeile mit einem Öffner (
{,[,(), wird die neue Zeile eine zusätzliche Ebene eingerückt. - Einen Block öffnen. Steht der Cursor zwischen einem Öffner und seinem passenden Schließer, klappt der Block auf: Die neue Zeile wird eine Ebene tiefer eingerückt, und der Schließer rutscht auf eine eigene Zeile in der Tiefe des Öffners.
Einrückungsstil — Tabs, Leerzeichen oder Auto¶
Eine einzige Einrückungseinheit steuert die Tab-Taste, das Ausrücken mit Backspace und die automatische Einrückung oben, sodass sie immer übereinstimmen. Wählen Sie sie unter Einstellungen ▸ Plugins ▸ Einrückung:
| Stil | Verhalten |
|---|---|
| Tabs (Standard für neue Dateien) | Eine Ebene ist ein echtes Tabulatorzeichen; Leerzeichen pro Einzug legt seine sichtbare Breite fest. |
| Leerzeichen | Eine Ebene besteht aus Leerzeichen pro Einzug Leerzeichen. |
| Auto (aus dem Dokument erkennen) | Der Editor untersucht die vorhandene Einrückung des Dokuments und folgt ihr — eine mit Tabs eingerückte Datei bleibt bei Tabs, eine 2-Leerzeichen-Datei bei zwei Leerzeichen. Eine Datei ohne Einrückung fällt auf den Standard (Tabs) zurück. |
Neue, unbenannte Dateien verwenden standardmäßig Tabs mit Breite 4.
Einrückung von Hand anpassen¶
Das Einrückungs-Plugin fügt zwei Befehle hinzu (auch unter Bearbeiten ▸ Einzug), die jede von der Auswahl berührte Zeile ein- oder ausrücken — bzw. die Zeile des Cursors, wenn nichts ausgewählt ist:
| Befehl | Tastenkürzel |
|---|---|
| Einzug vergrößern | Ctrl+] |
| Einzug verkleinern | Ctrl+[ |
Sprachspezifische Standards¶
Manche Sprachen haben eine nahezu universelle Einrückungskonvention, und der Editor liefert sie als Standard dieser Sprache mit — eine frisch geöffnete Datei dieses Typs rückt ohne jede Konfiguration korrekt ein:
| Sprache | Standard |
|---|---|
| Python | 4 Leerzeichen (PEP 8) |
| Rust | 4 Leerzeichen (rustfmt) |
| Markdown | 4 Leerzeichen (verschachtelte Listen) |
| YAML | 2 Leerzeichen (Tabs sind nicht erlaubt) |
| JSON | 2 Leerzeichen |
| Go | Tabs (gofmt) |
| C / C++ | Tabs |
Alle anderen Sprachen tragen bewusst keinen Standard und folgen Ihrer globalen Einrückungseinstellung. Wird die Sprache eines Dokuments von Hand gewechselt (Menü Sprache), wird der passende Standard sofort erneut angewendet.
Der Standard steht in der Definitionsdatei der Sprache
(colorizers/<id>.json, Schlüssel "indent": { "style": "tabs|spaces", "width": N }).
Power-User können einen mitgelieferten Standard ändern, indem sie eine
bearbeitete Kopie dieser Datei in das Benutzer-Override-Verzeichnis legen —
der Katalog ersetzt Definitionen anhand ihrer id.
Geplant: sprachspezifische Overrides in den Einstellungen
Eine Einstellungstabelle zum Übersteuern dieser Standards pro Sprache (ohne JSON anzufassen) ist entworfen und als nächster Schritt dieser Funktion geplant; bis dahin sind der JSON-Override oben und die nachfolgenden Ebenen die Wege, die Einrückung zu steuern.
Woher die Einrückungseinheit kommt (Vorrang)¶
Wenn mehrere Quellen eine Meinung zur Einrückung haben, löst der Editor sie an einer Stelle auf und wendet den Gewinner an — höchster Vorrang zuerst:
- Die
.editorconfigdes Projekts — falls vorhanden und „.editorconfig-Einstellungen anwenden“ aktiv ist, gewinnenindent_style/indent_size/tab_widthdes Projekts für passende Dateien. - Der mitgelieferte Standard der Sprache — die Tabelle oben, wenn die Sprache des Dokuments einen deklariert.
- Ihre globale Einrückungseinstellung — die Wahl Tabs / Leerzeichen / Auto oben.
Ein Projekt mit .editorconfig übersteuert also alles für die Dateien dieses
Projekts; eine Python-Datei außerhalb eines solchen Projekts rückt mit
PEP-8-Leerzeichen ein, selbst wenn Ihre globale Einstellung Tabs ist; und
alles andere folgt Ihrer globalen Einstellung. Die Einrückung eines Dokuments
können Sie danach jederzeit von Hand ändern.
Der Vorrang gilt in dem Moment, in dem sich etwas ändert: Wird in den
Einstellungen eine andere Wahl Tabs / Leerzeichen / Auto angewendet, wird das
geöffnete Dokument sofort neu aufgelöst — eine von einer .editorconfig oder
einem Sprachstandard bestimmte Datei behält ihre Einrückung, ohne dass Sie
den Tab wechseln müssen.
Mehrere Cursor¶
Alles Obige gilt an jedem Cursor, wenn Sie mit
mehreren Cursorn arbeiten: Ein getipptes ( fügt an jedem
() ein, Enter behält die Einrückung jeder Zeile bei, und Backspace zwischen
leeren Paaren löscht an jedem Cursor beide Zeichen. Ein einziges
Rückgängig nimmt die gesamte Mehrcursor-Bearbeitung in einem Schritt
zurück.
Backspace bei gemischten Cursorn
Backspace löscht Paare nur, wenn jeder Cursor zwischen einem leeren Paar steht. Stehen einige Cursor woanders, fällt Backspace an allen auf sein normales Verhalten zurück — es löscht also nie an einem Cursor einen verirrten Schließer, während an einem anderen ein Wort bearbeitet wird.
In Kommentaren und Zeichenketten¶
Ist ein Syntax-Colorizer aktiv, halten sich Auto-Paarung und das
klammergesteuerte Blocköffnen in Kommentaren und
Zeichenketten-/Zeichenliteralen zurück — dort ist ein { oder "
gewöhnlicher Text, kein Code, also lässt der Editor ihn exakt so stehen, wie
er getippt wurde. Die einfache Einrückung (Übernahme des Leerraums der
Vorzeile) funktioniert weiterhin. In einem reinen Textdokument ohne Colorizer
gibt es nichts zu unterdrücken, daher verhält sich die Paarung überall gleich.
Verwandte Themen¶
- Einrückungs-Plugin — die Einstellung des Einrückungsstils und die Befehle Einzug vergrößern/verkleinern.
- EditorConfig — projektspezifische Einrückung, die Ihre globale Einstellung übersteuert.
- Bearbeiten mit mehreren Cursorn — mehrere Cursor setzen und gleichzeitig bearbeiten.