Często używam wielu wywołań, forward-word
a następnie jednego, backward-word
aby przenieść punkt na początek słowa w wierszu. Chyba nigdy nie przyzwyczaiłem się do sposobu, w jaki forward-word
różni się od vima w
i nawet po latach używania Emacsa nie mogę przyzwyczaić się do różnicy.
Czy jest jakaś funkcja, której mogłabym użyć zamiast tego forward-word
, która nie przeskakuje słów, ale zatrzymuje się również na początku słowa? Czy istnieją inne strategie przejścia do początku słowa podczas przesuwania punktu do przodu, które nie wymagają wielokrotnego wykonywania forward-char
?
Odpowiedzi:
misc
Pakiet (dostarczany z emacs) ma wbudowaną funkcjęforward-to-word
, która robi to, co myślę, że chcesz:Aby go użyć, najpierw dodaj
(require 'misc)
do pliku konfiguracyjnego.źródło
w
. O ile widzę, istnieje prawie idealne mapowanie vim-to-emacs:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Ale nie jestem ekspertem od vimów, więc może brakuje mi subtelności.w
,e
ib
tylko rozmycie się i po prostu poruszać. Dziwne. Byłem pewien, żew
zatrzymałem się w obu punktach! Przyjmuję twoją odpowiedź, ponieważ dokładnie pasuje do mojego pytania :)Można powiązać poniżej funkcji do
M-f
i wiążą oryginałuforward-word
doM-F
. Ta funkcja po prostu przyjmujearg
i przekazuje ją doforward-word
funkcji. Tak więc uniwersalne argumenty będą działać tak samo dobrze, jak w przypadku oryginalnej funkcji.Należy jednak pamiętać, że powyższa funkcja może nie zawsze działać prawidłowo ; to bardzo zależy od tego, czy punkt jest już na początku słowa, czy nie.
Oto inny sposób implementacji powyższego, w którym granica słowa nie jest zgodna z tabelą składni, ale ściśle z separacją białych znaków:
Zasługa @glucas dla tego pomysłu.
źródło
Po długim i bolesnym poszukiwaniu idealnych funkcji „do przodu / do tyłu” znalazłem następujące, z których jestem teraz bardzo zadowolony:
źródło
Jeśli zechcesz użyć
evil
,w
w normalnym stanie jest to związane zevil-forward-word-begin
funkcjonalnością w stylu Vima, której szukasz.źródło
evil
dawno temu, ale od pewnego czasu używamgod-mode
zamiast tego zwykłych powiązań Emacsa.Jak wspominasz, sztuczka polega na przejściu dwóch słów do przodu, a następnie jednego słowa do tyłu.
Następujące czynności powinny załatwić sprawę i szanować inne tryby, takie jak tryb pod słowem.
Jest to podstawowa wersja /emacs//a/4272/508 , która nie obejmuje niektórych przypadków, ale jest łatwiejsza do zrozumienia.
źródło