Al buscar una cadena con C-s
, quiero poder presionar alguna tecla para salir del modo de búsqueda, pero aún así mantener la selección de la coincidencia. De esa manera, puedo comenzar a escribir de inmediato y reemplazar la última coincidencia.
Por ejemplo, digamos que tengo el siguiente documento:
The quick brown fox jumps over the lazy dog.
Si busco "perezoso", emacs seleccionará esa palabra así (los corchetes son la selección, la tubería es el cursor):
The quick brown fox jumps over the [lazy|] dog.
Ahora, si returnpresiono, emacs mantendrá la posición de mi cursor, pero deseleccionará "perezoso":
The quick brown fox jumps over the lazy| dog.
En lugar de esto, quiero un acceso directo que salga del modo de búsqueda pero mantenga la selección de coincidencia actual, como en el segundo estado anterior.
M-x query-replace
lo que estás buscando?C-s
y escribir lo que creo que quiero buscar, luego cambiar la consulta con retroceso a cero en lo que quiero cambiar. Luego juego con lo que exactamente quiero reemplazar.M-%
es demasiado "formal".query-replace
no resuelve estoRespuestas:
Aquí hay un enfoque:
Esto vincula una tecla diferente (C-return) para salir de la búsqueda actual y también dejar la última coincidencia seleccionada. Esto también funcionará
isearch-forward-regexp
, lo cual es útil.fuente
bind-key
vienebind-key
viene de otra biblioteca. He cambiado la respuesta para usar la función incorporada en sudefine-key
lugar.Library Isearch + te permite hacerlo fácilmente e incluso activarlo / desactivarlo sobre la marcha.
La opción no nula
isearchp-set-region-flag
establece automáticamente la región (selección) alrededor del último objetivo de búsqueda cuando sale de la búsqueda.Comando
isearchp-toggle-set-region
, vinculado aM-s M-SPC
durante la búsqueda alterna la opciónisearchp-set-region-flag
.El comando
set-region-around-search-target
establece manualmente la región alrededor del último objetivo de búsqueda. (Por lo tanto, incluso si la opción no está configurada, por lo que no obtiene la selección automática, puede hacerlo manualmente).Library Reemplazar + le permite hacer lo mismo para
query-replace
etc. Coloca la región alrededor (es decir, selecciona) la última ocurrencia de reemplazo. Utiliza la misma opción,isearchp-set-region-flag
para controlar esto, y el comandoset-region-around-search-target
tiene el mismo efecto.fuente