A menudo uso múltiples invocaciones forward-word
seguidas de una sola backward-word
para mover el punto al comienzo de una palabra en una línea. Supongo que nunca me acostumbré a la forma en que forward-word
difiere de vim w
e incluso después de años de usar Emacs, no puedo acostumbrarme a la diferencia.
¿Hay una función que podría usar en lugar de forward-word
que no salte sobre las palabras sino que también se detenga al comienzo de una palabra? ¿Existen otras estrategias para avanzar al comienzo de una palabra al avanzar que no implican la ejecución repetida forward-char
?
Respuestas:
El
misc
paquete (enviado con emacs) tiene la función incorporadaforward-to-word
, que hace lo que creo que desea:Para usarlo, primero agréguelo
(require 'misc)
a su archivo de configuración.fuente
w
. Hasta donde puedo ver, hay un mapeo casi perfecto de vim a emacs:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Pero no soy un usuario experto de vim, así que tal vez me falta algo de sutileza.w
,e
yb
simplemente me borro y me muevo. Extraño. Estaba segurow
detenido en ambos puntos! Entonces, aceptaré tu respuesta, porque se ajusta exactamente a mi pregunta :)Puede enlazar el siguiente función para
M-f
y se unen al originalforward-word
aM-F
. Esta función simplemente toma elarg
y lo pasa a laforward-word
función. Por lo tanto, los argumentos universales funcionarán tan bien como con la función original.Sin embargo, se debe advertir que la función anterior no siempre hace lo correcto ; depende mucho de si el punto ya está en el comienzo de una palabra o no.
Aquí hay otra forma de implementar lo anterior donde el límite de la palabra no es según la tabla de sintaxis sino estrictamente en la separación de espacios en blanco:
El crédito va a @glucas por esta idea.
fuente
Después de una larga y dolorosa búsqueda de las funciones perfectas de 'palabra hacia adelante / hacia atrás', encontré lo siguiente con lo que ahora estoy muy feliz:
fuente
Si está dispuesto a usar
evil
,w
en estado normal está obligadoevil-forward-word-begin
, que es la funcionalidad de estilo Vim que está buscando.fuente
evil
hace mucho tiempo, pero desde hace un tiempo usogod-mode
enlaces regulares de Emacs.Como mencionas, el truco es avanzar dos palabras, luego una palabra hacia atrás.
Lo siguiente debería hacer el truco y respetar otros modos como el modo de subpalabras.
Esta es una versión rudimentaria de /emacs//a/4272/508 que no cubre algunos casos, pero es más fácil de comprender.
fuente