comandos - ¿Cómo resaltar todas las apariciones de una palabra en un buffer de Emacs?
emacs linux (11)
Notepad ++ tiene una función conveniente: si selecciona una palabra en su texto (no necesariamente una palabra clave), la palabra se resalta en todo el texto. ¿Se puede hacer esto en Emacs también? Y si es así, ¿cómo?
No necesariamente tiene que funcionar exactamente como Notepad ++ (es decir, a través de la selección); idealmente, me gustaría configurar un enlace de clave que haga resaltar todas las apariciones de la palabra debajo del cursor.
Sería fantástico si los aspectos más destacados fueran permanentes, es decir, si el punto en movimiento fuera de una palabra resaltada no debería eliminar el resaltado.
Además, sería útil si hubiera una solución que permitiera navegar entre los aspectos más destacados (utilizando enlaces de teclas personalizadas).
Escriba Cs
, luego escriba la palabra actual o escriba Cw
. Como beneficio adicional, ahora puede presionar Cs
nuevamente para buscar la palabra.
Esto se llama búsqueda incremental .
Esto puede no ser tan bueno como lo que esperabas, pero si pones
(global-hi-lock-mode 1)
en su archivo .emacs
, puede escribir Cx wh REGEX <RET> <RET>
para resaltar todas las ocurrencias de REGEX
y Cx wr REGEX <RET>
para volver a resaltarlas. Una vez más, no es tan elegante como te gustaría, pero funcionará.
Esto quizás no destaque, pero buscará una palabra sin que sea necesario escribirla ...
cuando haya alcanzado la palabra que desea buscar, CS, luego lea la palabra completa con CW, entonces puede CS y la buscará. En mi Emacs también destaca todas las instancias en el documento.
Lo que uso es inactivo-highlight
http://www.emacswiki.org/emacs/IdleHighlight
Mx inactivo resaltar establece un temporizador inactivo que resalta todas las ocurrencias en el búfer de la palabra debajo del punto.
Para habilitarlo en todos los modos de programación, en ~/.emacs.d/init.el
:
;; highlight words
(add-hook ''prog-mode-hook (lambda () (idle-highlight-mode t)))
Los comandos en la biblioteca highlight.el
permiten (un) resaltar el texto que coincide con una expresión regular (en este caso un símbolo), usando superposiciones o propiedades de texto. Puede alternar entre las ocurrencias. El resaltado puede ser temporal o persistente. (más información) .
Prueba iedit . Resalta la palabra en el punto y le permite editar fácilmente todas las apariciones. Con una pulsación de tecla adicional (C- ''), oculta todas las líneas sin esa palabra. ¡Muy útil!
Pruebe http://www.emacswiki.org/emacs/msearch.el Se resaltan todas las ocurrencias del texto seleccionado con el cursor. Tienes que arrastrar sobre la cadena que deseas resaltar. Eso le permite cambiar fácilmente la selección sin cambiar el resaltado.
Si desea conservar el resaltado de una cadena, puede congelarla.
Puedes esclavizar un buffer a otro buffer. El texto seleccionado en el búfer principal también se resaltará en el búfer esclavo. Eso es útil para comparar memorias intermedias. También es útil para tomar notas en un búfer mientras investigas el texto en otro. Puede tener una colección de palabras clave en el búfer de notas. Arrastre sobre dicha palabra clave y se resaltarán sus ocurrencias en el texto investigado.
Estoy usando esto desde hace años. Agregué el congelamiento recientemente. Entonces, tal vez algo está roto. Si este es el caso, déjame una nota en http://www.emacswiki.org/emacs/msearch o aquí.
Tal vez highlight-symbol.el en http://nschum.de/src/emacs/highlight-symbol/ es lo que estás buscando:
Light-symbol resaltará cualquier punto del símbolo que haya terminado.
Alternativamente, puede usar occur , que enumera todas las líneas que coinciden con una expresión regular. Es útil para ver rápidamente todas las funciones en una clase.
Las sugerencias de hi-lock
son buenas. Sin embargo, creo que es más fácil usar las versiones Mx :
Mx highlight-regexp
RET <REGEXP>
Mx highlight-phrase
RET <REGEXP>
highlight-phrase
es solo un poco de azúcar alrededor de highlight-regexp
que ignora mayúsculas y traduce un espacio en la expresión regular para que coincida con el espacio en blanco arbitrario. Práctico.