¿Cómo reemplazo la palabra actual debajo del cursor en Emacs?
Sé que puedo usar query-replace o replace-string pero cada vez que lo hago tengo que escribir la cadena completa para ser reemplazado, esto es molesto.
Vi tiene una contraseña de comando equivalente y puedo usar un atajo para colocar la palabra debajo del cursor para reemplazarla:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
¿Alguien sabe cómo hacerlo con Emacs?
Respuestas:
El uso de copiar y pegar:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Si ya ha comenzado la sustitución, se puede volver a utilizar el búfer original de hacer la copia y pegar con la ventana habitual o tampón órdenes de conmutación:M-x replace-string RET … C-x o M-d C-_ C-x o C-y
. Puede usar un argumento prefijo enM-d
(por ejemploESC 4 2 M-d
) para reemplazar varias palabras.Si planea reemplazar una o más palabras en el cursor, puede comenzar desde una búsqueda incremental (
C-s
), useC-w
para comenzar a buscar la palabra debajo del cursor y luego presioneM-%
para cambiar areplace-string
.fuente
La búsqueda incremental tiene esta característica, pero las funciones de reemplazo no. Afortunadamente, la búsqueda incremental hace tener una manera de cambiar al modo de reemplazar una vez que haya seleccionado un término de búsqueda. Asi que:
Como probablemente sepa por usar M-%normalmente, este es un modo de reemplazo de consulta en el que le pregunta qué hacer con cada coincidencia. Si solo quieres reemplazarlos a todos, haz clic !en el primer partido
fuente
fuente
Soy completamente nuevo en emacs pero puedo sugerir lo siguiente:
Ahora puedes escribir una nueva palabra. Funciona casi como
cw
en vimfuente
Si va a buscar y reemplazar con
M-S-%
solo presionarM-n
rellena la palabra debajo del cursor, presionarlo nuevamente lo envuelve en "delimitador de símbolo".fuente
Estaba luchando y deseando lo mismo desde que me mudé de Vim a Emacs.
Después de un poco de investigación y experimentación, se me ocurrió la siguiente función que le permite hacer lo mismo con el paquete Evil instalado o usando spacemacs.
También funciona con región activa (o selección visual en término vim) y eso puede ser bastante útil para reemplazar palabras como abc-def-hij:
luego, en su init.el, defina el mismo enlace de teclas:
la combinación de teclas es ligeramente diferente de vim uno, que es "espacio z", pero no he descubierto cómo mapear eso en emacs cuando el modo malvado está allí. sigo quejándome, no es un prefijo, etc. y soy relativamente nuevo en emacs. Pero todavía no está tan mal y yo mismo estoy contento con esta solución en este momento.
fuente
Esto ya ha sido respondido y no puedo comentar porque todavía no tengo suficiente reputación. Pero lo que estás buscando está
ciw
en vim.En emacs, lo más cerca que he llegado es esta combinación:
M-b M-d
Esto vuelve al comienzo de la palabra en la que está el cursor y luego elimina la palabra.
fuente