J'écris un script dans lequel je veux contrôler les recherches par programmation et les mettre en surbrillance. Les résultats de la fonction search() ne sont pas mis en surbrillance (je pense), donc l'utilisation de cette fonction n'est pas utile pour moi. Ce que je veux faire est d'utiliser la commande 'normal /' pour rechercher une variable, mais cela ne semble pas être simple. Je peux la commande de script:Commande de recherche et de surlignage Vim à partir d'un script
execute 'normal /' . my_variable . '\<CR>'
(ou d'autres variations comme le suggère la pointe de vim ici: http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching)
mais il ne fait rien. Je peux voir le terme de recherche correct dans la ligne de commande après l'exécution de la ligne de script, mais le focus est dans le document, le registre de recherche n'a pas été modifié et le curseur n'a fait aucune recherche. (Il semble que le < CR> ne soit pas entré, bien qu'aucune erreur ne soit lancée - et oui, j'ai aussi essayé d'utiliser le littéral^M.)
Je peux au moins contrôler le registre de recherche ceci:
execute 'let @/ ="' . a:term .'"'
et la chose évidente semble être de faire:
normal n
Mais ce n normal »ne fait rien si je le lance dans un script. Le réglage du registre de recherche fonctionne, si j'appuie manuellement sur 'n' après la fin du script, la recherche se fait (et la surbrillance apparaît, puisque hlsearch est activé). Je ne m'inquiète même pas si le curseur est positionné, je veux juste que le modèle de registre soit mis en évidence. Mais diverses combinaisons de 'set hlsearch' dans le script ne fonctionnent pas non plus. Je sais que je pourrais utiliser 'match()', mais je veux le faire fonctionner avec un surlignage de recherche normal, et je me demande ce que je fais mal. Ça doit être quelque chose de simple mais je ne le vois pas. Merci pour toute aide.
J'ai essayé ma commande de recherche. 'execute" normal/^ --- \ "' fonctionne. Mais 'execute 'normal/^ --- \ ' 'ne fonctionne pas. –
ppan