In Vim können Sie drücken .
, um die letzte Änderung zu wiederholen, einschließlich des Einfügens von Text.
In Emacs wird C-x
z
nur der letzte Befehl wiederholt. Ich bin mir bewusst, dass hier Makros verwendet werden können, aber mehr als oft stelle ich fest, dass ich denselben Text zu spät erneut einfügen muss. Wenn ich es nur noch einmal einfügen muss , ist es sinnlos, ein Makro zu definieren.
F: Gibt es eine Möglichkeit, das Einfügen von Text in Emacs zu wiederholen?
text-editing
ooi
quelle
quelle
C-f
, Suche usw.) sind? Wenn das Sinn macht ...C-space
bewege den Cursor, umM-w
zu kopieren) undC-y
füge dann so oft wie nötig ein.Antworten:
dot-mode
ist ein "Nebenmodus zum Wiederholen von Eingaben oder Befehlen" und kann das tun, was Sie brauchen. Grundsätzlich werden nur die letzten Einfügungen / Löschungen wiederholt, die Sie ausführen. Es ist ziemlich ähnlich wie.
in Vi (m).quelle
dot-mode
tut und wie es die Funktionalität bietet, die OP zu erhalten versucht?Sie könnten dafür
kmacro-edit-lossage
(C-x C-k l
) verwenden: Sie können Ihre 300 letzten Tastenanschläge (einschließlich einfacher Einfügungen) anzeigen und als Makro bearbeiten.Zur einfachen Verwendung suchen Sie einfach den Anfang der Einfügung, die Sie wiederholen möchten, löschen den gesamten Text von "Makro:" bis zu diesem Punkt und drücken
C-c C-c
. Jetzt haben Sie ein Makro, mit dem Sie dieselben Aktionen ausführen können, als hätten Sie nicht vergessen, es überhaupt aufzuzeichnen.Leider schlägt dies fehl, wenn die letzten 300 Tastenanschläge Mausklicks enthalten.
Bearbeiten: Der folgende Code ändert es so, dass nur die Tasten nach dem letzten Mausereignis erhalten bleiben.
quelle
edmacro-fix-menu-commands
. Es wird ein optionales Argument benötigt, das die Mausereignisse ignorieren kann. Aber ich weiß nicht genug über das Beratungssystem, um es zum Laufen zu bringen.Ich denke,
dabbrev-expand
Funktion könnte den Trick machen. Angenommen, Sie haben bereits einige Wörter eingegeben: Emacs, Emotion, Emoji, ... Wenn Sie das nächste Mal ein Wort eingeben, das mit 'em' beginnt, können SieM-/
drücken, und Emacs schlägt Ihnen vor, eines der bereits eingefügten Wörter einzufügen von 'em' beginnen. Schlagen Sie weiterM-/
und Emacs zeigen Ihnen "Emoji", dann "Emotion", dann ...Möglicherweise möchten Sie auch den Befehl zum Wiederholen eines komplexen Befehls verwenden . Das beliebte Beispiel ist: Sie möchten den Befehl
query-replace
in vielen verschiedenen Puffern wiederholen und dabei immer dieselben Argumente verwenden. Ersetzen Sie "pitt" durch "patt".Sie führen es einmal aus, wechseln in ein anderes Fenster und geben ein
C-x ESC ESC
, um es erneut auszuführen.Und zum Schluss kann ich das wiederholte Einfügen vorschlagen ? Diese el-Datei hilft Ihnen beim Einfügen mithilfe einer Logik. Es ist eher so, als würde man die letzte Einfügung wiederholen, aber für jede Iteration ändern sich die Argumente.
Dieses Beispiel finden Sie in der el- Datei:
Ich hoffe das wird helfen.
quelle
repeat
(was das OP erwähnt), nicht wirklich nützlich für Texteinfügungen.Repeat-insert
muss vor dem Einfügen des Textes wie bei einem Makro bedacht werden. Istdabbrev-expand
aber eine schöne Idee!