Ich habe eine Region mit Python-Code in Emacs ausgewählt. Was sind die effizientesten Methoden, um jede Zeile darin um 4 Leerzeichen einzuziehen und die Einrückung aufzuheben?
Idealerweise möchte ich etwas, das nicht kontextsensitiv ist (z. B. das Einrücken von Passagen in Dokumentzeichenfolgen, bei denen sich der Einzug nicht auf die Python-Syntax bezieht).
Meine Moduszeile zeigt (Python)
. Beim Durchsuchen des Webs habe ich viele Diskussionen über die Verwendung von python-mode
statt gefunden python
, aber ich habe erst vor ein paar Tagen angefangen, Emacs zu verwenden. Daher bin ich vorsichtig, wenn ich die Standardeinstellungen ändern möchte, bevor ich die Gelegenheit habe, sie zu verstehen. Wenn der Wechsel zu python-mode
die beste Option ist, akzeptiere ich das gerne als Antwort.
Was ich versucht habe (aus dem Handbuch):
<TAB>
keine WirkungC-M-\
keine WirkungC-x <TAB>
(starr einrücken) jede Zeile um eine Spalte einrücken (und die Auswahl der Region aufheben)M-i
rückt eine erste Zeile um einen Tabulator ein (Länge 8 Leerzeichen)C-M-q
- "CMq ist undefiniert"
Der einzige Weg, den ich gefunden habe, ist die Verwendung von regex-replace, aber das ist eine schreckliche Anzahl von Tastenanschlägen für eine so einfache Aufgabe.
quelle
python-indent-shift-left
.indent-rigidly
Es wird ein Präfix-Argument verwendet, das angibt, um wie viel eingerückt werden soll, alsoC-u 42 C-x TAB
um 42 Spalten eingerückt werden soll. Da das Standard-Präfix-Argument 4 ist,C-u C-x TAB
werden 4 Spalten eingerückt.Wenn Sie die Region erneut auswählen möchten, tun Sie dies
C-x C-x
anschließend.quelle
Verwenden Sie den Befehl indent-rigidly mit einem numerischen Präfix.
C-u 4 M-x indent-rigidly
Um den Bereich um vier Leerzeichen einzurücken,C-u -4 M-x indent-rigidly
um vier Leerzeichen zu entfernen.quelle
Cx Cx Markiere den Code und dann Mx Einrückung für Tab-Modus
Das ist der Vorteil, wenn Sie für jede Zeile die Tabulatortaste gedrückt haben.
quelle
Sie können auch den Spaltenmodus verwenden.
Wählen Sie die Zeilen im Spaltenmodus aus und fügen Sie allen gleichzeitig vier Leerzeichen hinzu:
C-<space>
Zeichen setzenC-x r t
Spaltenmodus aufrufen (oderC-<RET>
wenn Sie einen CUA-Modus haben)<space><space><space><space><RET>
Sie können auf ähnliche Weise vier Leerzeichen löschen - fügen Sie einfach 4 Spalten in Ihre markierte Region ein (Schritte 2-3) und drücken Sie
<DEL>
quelle
Bei der Aktualisierung der obigen Lösung von Chen (getestet unter Emacs 24.4.1) wurden die Befehle umbenannt. Angenommen, Sie möchten gemäß der Variablen python-indent einrücken, lauten die Befehle python-indent-shift-left und python-indent-shift-right. Du kannst:
stellen Sie sie durch Eingabe von
M-x python-indent-shift-right
oder ausM-x python-indent-shift-left
Verwenden Sie die Standardverknüpfungen für den Python-Modus
C-c >
undC-c <
binde sie neu. ZB auf einer Tastatur mit einem Windows-Knopf, den ich benutze:
quelle
Composability ist der König bei Emacs. Kombinieren Sie einfach
M-i
mit https://github.com/magnars/multiple-cursors.el und Sie haben Ihren Befehl zum Blockieren von Einrückungen. Das machst du:M->
N-mal (wobei N die Anzahl der Zeilen im Block ist)M-i
quelle
Beide
S-<LEFT>
undS-<RIGHT>
funktionieren gut imPython
Dur-Modus. Es ist besonders praktisch in Cua - Modus , woC-c
undC-x
Verhaltensänderungen / Schnitt zu kopieren , wenn eine Region ausgewählt ist.quelle