Estoy escribiendo un script en el que quiero controlar las búsquedas mediante programación y obtenerlas resaltadas. Los resultados de la función de búsqueda() no están resaltados (creo), así que usar esa función no me sirve.Control de búsqueda y resaltado de Vim desde un script
Lo que quiero hacer es usar el comando 'normal /' para buscar una variable, pero eso no parece ser sencillo. Me puede script el comando:
execute 'normal /' . my_variable . '\<CR>'
(u otras variaciones como se sugiere en la punta vim aquí: http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching)
pero no hace nada. Puedo ver el término de búsqueda correcto en la línea de comandos después de la ejecución de la línea de script, pero el foco está en el documento, el registro de búsqueda no se ha modificado y el cursor no ha realizado ninguna búsqueda. (Parece que el < CR> no se ingresa, aunque no se produce ningún error, y sí, he intentado utilizar el literal^M también).
Al menos puedo controlar el registro de búsqueda haciendo esto:
execute 'let @/ ="' . a:term .'"'
y luego la cosa obvia parece ser la de hacer un:
normal n
Pero eso normal n 'no hace nada si me quedo en un script. Establecer el registro de búsqueda funciona, si presiono 'n' manualmente después de que el script finaliza, la búsqueda ocurre (y aparece el resaltado, ya que hlsearch está activado). Ni siquiera me importa si el cursor está posicionado, solo quiero que se resalte el patrón de registro. Pero varias combinaciones de 'set hlsearch' en el script tampoco funcionan.
Sé que podría usar 'match()', pero quiero que funcione con el resaltado de búsqueda regular, y me pregunto qué estoy haciendo mal. Debe ser algo simple pero no lo estoy viendo. Gracias por cualquier ayuda.
He intentado mi comando de búsqueda. 'execute" normal/^ --- \ "' funciona. Pero 'ejecutar' normal/^ --- \ '' no. –
ppan