Die Standardeinstellung für die Schlüsselbindung C-a/C-e
ist nur für eine Sache: Verschieben Sie zum Anfang / Ende der Zeile. Gibt es ein Paket, das Emacs dazu bringen kann, sich so zu verhalten:
- Wenn ich nicht am Ende einer Zeile bin,
C-e
gehe ich zum Ende der Zeile, andernfalls gehe ich zum Ende der nächsten Zeile - Wenn ich nicht am Anfang einer Zeile bin,
C-a
gehe ich zum Anfang der Zeile, andernfalls gehe ich zum Anfang der nächsten Zeile.
Der Punkt ist, dass Sie einfach weiter schlagen können C-a/e
, um zum Anfang / Ende jeder Linie zu gelangen, ohne Ihren Finger zu bewegen, um zu erreichen C-n/p
.
Und mit einem Präfix ( C-u
) gehen sie in entgegengesetzter Richtung zum Anfang / Ende der Zeile.
key-bindings
line-break
motion
CodyChan
quelle
quelle
C-a
"hoch" undC-e
"runter" gehen? Mit anderen Worten, ist die Bedeutung von "nächste Zeile" in den Punkten 1 und 2 gleich?C-a
nach oben undC-e
nach unten" nachgedacht, als ich diese Frage gestellt habe, aber dann dachte ich, wenn jemand einedefun
Lösung wie Sie gibt, weiß jeder, was zu tun ist, wenn erC-a
"nach oben" möchte .Antworten:
Ich kenne kein Paket, das dieses Verhalten ermöglichen würde, aber hier ist eine Möglichkeit, dies zu tun.
Drücken Sie,
C-h k C-a
um herauszufinden, dass diesC-a
gebunden istmove-beginning-of-line
. Dies ist die Funktion, die wir ändern müssen --- oder nur verwenden, um den Teil "Zum Anfang bewegen" zu implementieren. Ebenso kannC-h k
ich mit findenforward-line
, welche verwendet werden, um sich auf / ab zu bewegen.Um eine Funktion an einen Schlüssel binden zu können, müssen wir sie zu einem Befehl machen , daher müssen wir das
interactive
spezielle Formular verwenden (siehe Verwenden von Interactive ). Um dasC-u
Präfixargument zu verwenden, benötigen wir das"P"
Codezeichen.Wenn wir dies kombinieren mit
bolp
(prüfen, ob am Anfang einer Zeile) undeolp
(prüfen, ob am Ende einer Zeile), können wir schreiben:Jetzt können wir diese neu binden
C-a
undC-e
aufrufen:Alternativ könnte man Ratschläge zu
move-beginning-of-line
und hinzufügenmove-end-of-line
.quelle
my-move-beginning-of-line
Funktion. Sollte es sein(previous-line (if arg -1 1))
oder(forward-line (if arg 1 -1))
(1 und -1 umgeschaltet)?C-a
oder verwendetC-e
.C-a
um "up" zu machen .Bibliothek
misc-cmds.el
hat diese Funktion schon lange.Dies sind die relevanten Befehle und vorgeschlagenen Tastenkombinationen (diese Bindungen werden in hergestellt
setup-keys.el
).Hier ist, was
C-h f end-of-line+
als ein Beispiel sagt:quelle
Die folgenden zwei Funktionen führen die gewünschten Aktionen aus.
quelle