Creo que el problema es que no está pensando en buscar de una manera que sea congruente con la forma en que se ha diseñado la búsqueda, por lo que su pregunta realmente no tiene sentido en el contexto de la búsqueda como actualmente existe
Isearch ya le da exactamente la función que desea, pero tiene que decirle que quiere que suceda escribiendo esa C-g que parece tan vehementemente opuesta a la mecanografía. Si no le dices a isearch qué es lo que quieres hacer, y cuándo quieres que lo haga, ¿cómo se supone que debe saber qué hacer?
Como @Tom intentó explicar, la forma predeterminada es iniciar la búsqueda desde la posición actual en el búfer, y puede reiniciar al principio del búfer si ha escrito algunos caracteres fallidos y luego presione Cs, es un valor muy valioso característica. Estoy seguro de que muchas personas confían en este comportamiento. Su método de utilizar una macro para iniciar siempre una búsqueda al principio del búfer confundiría y confundiría a muchos de nosotros, aunque, por supuesto, no es algo malo para alguien como usted, que está acostumbrado. Sin embargo, significa que el resto de nosotros estamos bastante confundidos por tu disgusto por tener que presionar C-g para eliminar el texto que no coincide.
Piense también por un momento en lo que hace un segundo C-s si lo presiona inmediatamente después de iniciar isearch (en cualquier momento, pero la primera vez en una sesión) (es decir, antes de escribir cualquier otro carácter). Observe en particular qué sucede si su cadena de búsqueda anterior solo coincidiría parcialmente con algo en el búfer actual, y luego presiona Cg (y también observe cómo se presenta la cadena de búsqueda fallida, independientemente de si en parte coincidiría algo en el búfer actual o no).
Considere también cómo su función podría afectar negativamente el uso de multi-isearch-next-buffer-function.
Afirmar que otros editores pueden hacer lo que usted quiere que investigue en emacs realmente no ayuda mucho en su caso.
Creo que lo que realmente desea es un tipo de función de búsqueda ligeramente diferente que solo le permita buscar texto que se encuentre en el búfer en uso, en lugar de la capacidad de search de buscar cualquier cosa que le pase a ese texto existir en el buffer actual o no.
Tal vez isearch-mode podría adaptarse para hacer lo que quieres que haga, pero de una forma u otra, creo que tendrás que escribir algún código elisp. Tal vez podría implementar su nuevo modo de búsqueda como una opción dentro de isearch-mode que puede activarse y desactivarse de la misma manera que se puede activar y desactivar la sensibilidad de mayúsculas y minúsculas; y eso se puede configurar por defecto, de nuevo de la misma manera que la sensibilidad de mayúsculas y minúsculas se puede activar o desactivar de forma predeterminada.
Dos soluciones de trabajo hasta el momento: – dmgus
la primera por Stefan (ver abajo) y la segunda es por Drew Adams http://article.gmane.org/gmane.emacs.help/88152 La agregó también a ISearch + http : //www.emacswiki.org/emacs/IsearchPlus – dmgus