search - tutorial - "Super estrella" o encuentra la palabra debajo del cursor equivalente en emacs
emacs tutorial (5)
Soy un usuario de vim y recientemente he estado probando emacs por diversión. Encuentro que la característica que más me falta hasta ahora de vim es la función " super estrella " (encuentra la palabra debajo del cursor al escribir *), y aún no he encontrado el equivalente en emacs. Si no está incorporado, ¿qué necesitaría agregar a mi archivo emacs para obtener algo similar?
Aquí hay un comienzo:
(global-set-key (kbd "C-*") (lambda () (interactive) (re-search-forward (format "//b%s//b" (thing-at-point ''word)))))
En estos días también está Smart Scan , un paquete complementario liviano que brinda esta funcionalidad.
Está disponible desde MELPA ; las instrucciones para agregar MELPA a la lista de package-archives
habilitados están here .
Para instalarlo:
Mx package-install
RET smartscan
RET
Puede habilitarlo a través de
(global-smartscan-mode t) ;; Turn on Smart Scan globally
Las asociaciones de teclas predeterminadas para buscar hacia delante y hacia atrás son Mn y Mp , respectivamente.
PD: Si estás interesado, la entrada del blog original que presenta este paquete está here .
Pruebe Cs Cw
si está usando Viper (que funciona muy bien), esto debería funcionar de manera similar:
(require ''thingatpt)
(require ''viper)
(defun viper-search-word-at-point ()
"Reset viper-s-string to word at point and start a forward viper search."
(interactive)
(setq viper-s-string (word-at-point))
(viper-search viper-s-string ''t nil))
(global-set-key (kbd "C-*") ''viper-search-word-at-point)
Como señala paldepind , paldepind isearch-forward-symbol-at-point
( Ms. , Por defecto) es un equivalente cercano a * en Vim. Esta función está disponible comenzando en GNU Emacs 24.4; si su Emacs es diferente o más antiguo, siga leyendo para encontrar alternativas.
Usualmente lo hago ( Mb ...) Cs Cw ... Cs . Es decir:
- Mb para pasar al comienzo de la (s) palabra (s) de interés
- cero o más de estos
- Cs para iniciar una I-Search
- Cw para tirar de la palabra (s) a partir del punto
- uno o más de estos
- Cs para encontrar el próximo partido
- más Cs para encontrar partidos posteriores
- RET para salir de I-search en el partido más reciente
- o un montón de Cg para abortar de nuevo a la ubicación de partida original
Aquí hay un intento de integrarlo en I-Search (invocado a través de C y Cr ; use Ch k C para obtener información sobre isearch
).
(require "thingatpt")
(require "isearch")
(define-key isearch-mode-map (kbd "C-*")
(lambda ()
"Reset current isearch to a word-mode search of the word under point."
(interactive)
(setq isearch-word t
isearch-string ""
isearch-message "")
(isearch-yank-string (word-at-point))))
Al integrarlo en I-Search, se aprovecha su configuración de correspondencia de palabras y sensibilidad de mayúsculas y minúsculas ( Cs Mc C- * haría una búsqueda sensible a mayúsculas y minúsculas en la palabra debajo del punto).