Auf Sublime 3 gibt es diese genannt Befehl Paste and Indent
und der Tastaturbefehl für das ist, Super + shift + V
wo Super
die Hauptbefehlstaste für Ihr Betriebssystem. Dies scheint den Trick zu tun.
Ich habe es hier gefunden: https://gist.github.com/eteanga/1736542
Bearbeiten: Originalposter fügt weitere Informationen hinzu, sodass die Benutzer nicht versuchen müssen, die Kommentare zu analysieren.
Zurück zum zweiten Schritt des ursprünglichen Problems:
int firstVar, secondVar; int myVar = 0; int result = someThing(myVar); if (result == GOOD_RESULT) { firstVar = 4; secondVar = 11; } else { }
Ich wähle die beiden Linien zwischen dem ersten Satz von Klammern (die Zuordnungen firstVar
und secondVar
kopieren Sie sie ( Ctrl+ C), dann eine Leerzeile zwischen dem zweiten Satz von Klammern hinzuzufügen und meinen Cursor am Anfang der Leerzeile setzen (durch die angegeben |
, unten):
int firstVar, secondVar; int myVar = 0; int result = someThing(myVar); if (result == GOOD_RESULT) { firstVar = 4; secondVar = 11; } else { | }
Dann füge ich 'Einfügen und Einrücken' ( Ctrl+ Shift+ V) ein, und der Code wird mit der Standardeinrückung für den Dateityp eingefügt und kann nun geändert werden. (Auch wenn ich mehr Zeilen mit unterschiedlichen Einrückungsebenen eingefügt habe, würden sie alle entsprechend angepasst.)
int firstVar, secondVar; int myVar = 0; int result = someThing(myVar); if (result == GOOD_RESULT) { firstVar = 4; secondVar = 11; } else { firstVar = 4; secondVar = 11; | }
Leider ist auch eine zusätzliche leere Zeile übrig geblieben (da ich die zusätzliche Zeile nicht gesetzt hätte, wäre sie überhaupt nicht eingerückt worden), aber das lässt sich leicht löschen.
(Leider ist es immer noch nicht so gut, dass die mehrzeilige Einrückung korrekt funktioniert, da ich zunächst eine Leerzeile erstellen und dann löschen muss. Nur zwei zusätzliche Tastendrücke, sagen Sie? Sicher, aber es sind zwei Tastendrücke, die ich mache Ich müsste es nicht tun, wenn die mehrzeilige Einrückung korrekt funktioniert hat und mein natürlicher Fluss unterbrochen wird. Daher muss ich eher darüber nachdenken , als über die Codeänderungen, die ich vornehmen möchte .
(Alternativ kann ich das Zeilenvorschubzeichen am Ende der letzten Zeile abwählen, indem Sie gedrückt ←halten Shiftund dabei weiter gedrückt halten, und dann muss ich nur eine neue Zeile erstellen, aber keine nach dem Einfügen löschen. Aber das ist noch weniger Eine natürliche Sache, die Sie tun oder darüber nachdenken sollten, als das Hinzufügen und Löschen einer zusätzlichen Leerzeile, und es sind immer noch zwei zusätzliche Tastendrücke erforderlich.
(Auf jeden Fall ist diese Funktion eine Problemumgehung, keine Behebung, auch wenn sie eine interessante, sogar coole Funktion ist.)
In Situationen, in denen Sie bereits Textzeilen zwischen Ihren geschweiften Klammern haben ( und Sie den neuen Code nicht unmittelbar vor der letzten geschweiften Klammer einfügen müssen), funktioniert dies ziemlich gut: Sie müssen nicht einfach eine leere Zeile hinzufügen Positionieren Sie den Cursor an den Anfang der Zeile, an der Sie den neuen Code einfügen möchten, und drücken Sie Ctrl+ Shift+ V. Die Zeilen werden mit einer Einrückung eingefügt, die ihrer Umgebung entspricht.
Außerdem müssen Sie nicht unbedingt die Standardeinrückung verwenden. Wenn Sie den Mauszeiger auf eine beliebige Spalte setzen (nur mit Leerzeichen links davon), wird der Befehl "Einfügen und Einzug" alles, was Sie in diese Spalte einfügen, einrücken. (Wenn Sie dies in einer Zeile mit Text rechts vom Cursor tun, wird die Einrückung dieser Zeile so geändert, dass sie der von Ihnen eingefügten entspricht.)
Wie gesagt, ein interessantes und ziemlich cooles Feature, das es wert ist, mit ihm zu spielen und es sicher kennenzulernen. Und es lohnt sich, die akzeptierte Antwort für diese Frage zu sein. Aber immer noch nicht ganz so gut, als hätte man die mehrzeilige Einrückung richtig gemacht. :)