Ich verwende oft mehrere Aufrufe von forward-word
gefolgt von einem einzelnen backward-word
, um den Punkt an den Anfang eines Wortes in einer Zeile zu verschieben. Ich glaube, ich habe mich nie daran gewöhnt, wie forward-word
sich Vims unterscheiden, w
und selbst nach Jahren mit Emacs kann ich mich nicht an den Unterschied gewöhnen.
Gibt es eine Funktion, die ich verwenden könnte, um forward-word
nicht über Wörter zu springen, sondern auch am Anfang eines Wortes anzuhalten? Gibt es andere Strategien, um an den Anfang eines Wortes zu springen, wenn Sie einen Punkt nach vorne bewegen, ohne wiederholt ausgeführt zu werden forward-char
?
Antworten:
Das
misc
Paket (im Lieferumfang von Emacs enthalten) verfügt über die eingebaute Funktionforward-to-word
, die genau das tut, was Sie sich wünschen:Um es zu benutzen, füge es zuerst
(require 'misc)
deiner Konfigurationsdatei hinzu.quelle
w
. Soweit ich sehen kann, gibt es eine fast perfekte Zuordnung von Vim zu Emacs:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Aber ich bin kein erfahrener Vim-Benutzer, also fehlt mir vielleicht etwas Subtilität.w
,e
undb
nur verschwimmen weg und ich bewege gleich um. Seltsam. Ich war mir sicherw
, an beiden Punkten angehalten zu haben! Also, ich akzeptiere deine Antwort, weil sie genau zu meiner Frage passt :)Sie können die folgende Funktion an
M-f
und das Originalforward-word
an bindenM-F
. Diese Funktion übernimmt einfach diearg
und leitet sie an dieforward-word
Funktion weiter. Die universellen Argumente funktionieren also genauso gut wie mit der ursprünglichen Funktion.Achtung, obgleich die oben genannte Funktion möglicherweise nicht immer das Richtige tut . es hängt sehr davon ab, ob sich der Punkt bereits am Anfang eines Wortes befindet oder nicht.
Hier ist eine andere Art und Weise der Umsetzung von oben , wo das Wort Grenze ist nicht gemäß der Syntaxtabelle aber streng auf Leerzeichen Trennung:
Kredit geht an @glucas für diese Idee.
quelle
Nach einer langen und schmerzhaften Suche nach den perfekten 'Vorwärts / Rückwärts-Wort'-Funktionen habe ich folgendes gefunden, mit dem ich jetzt sehr zufrieden bin:
quelle
Wenn Sie bereit sind
evil
,w
im normalen Zustand zu verwendenevil-forward-word-begin
, ist das die Vim-artige Funktionalität, die Sie suchen.quelle
evil
langer Zeit verwendet, aber seit einiger Zeit verwende ichgod-mode
stattdessen normale Emacs-Bindungen.Wie Sie bereits erwähnt haben, besteht der Trick darin, zwei Wörter vorwärts und dann ein Wort rückwärts zu gehen.
Das Folgende sollte den Trick machen und andere Modi wie den Subword-Modus respektieren.
Dies ist eine rudimentäre Version von /emacs//a/4272/508 , die einige Fälle nicht abdeckt, aber einfacher zu verstehen ist.
quelle