Je sais qu'avec la commande de substitution de Vim, vous pouvez spécifier une plage de lignes:
:12,24s/search/replace
Je souhaite également pouvoir spécifier une plage avec des recherches normales. Quelque chose comme
:12,24/search
Puisque cela ne semble pas fonctionner (du moins sur ma configuration Vim), est-ce que quelqu'un sait comment y parvenir?
Je vous remercie.
:help search-range
et alors
:help /\%>l
donc essentiellement:
/\%>12l\%<24lsearch
Excellente réponse d'Akira. Mais après quelques recherches, j'ai trouvé une alternative. Ce n'est pas aussi élégant mais plus facile à saisir:
:12,24g/search/
Cela vous donnera une invite gênante mais se retrouvera sur la première ligne de la plage contenant la chaîne recherchée.
Avez-vous vraiment besoin de numéros de ligne? Une autre façon pourrait être de sélectionner la plage visuellement.
/\%Vwhat_to_search
pour rechercher 'what_to_search' dans la plage sélectionnée précédemment.C’est moins de taper, mais pas directement ce que vous avez demandé ;-)
Voir: help% V
[EDIT] Excellent, je viens d'apprendre que la plage dans laquelle effectuer la recherche peut être modifiée après avoir effectué la recherche en sélectionnant une autre plage, en désélectionnant à nouveau cette plage en appuyant sur Echap et sur n pour répéter la recherche. Vim est vraiment toujours bon pour les surprises agréables.
Continuez à utiliser la commande de substitution, mais ajoutez les indicateurs gc
à votre exemple d'origine.
:12,24s/search//gc
De :help search-range
[Pour effectuer une recherche dans une plage], utilisez la commande ": Substitute" avec l'indicateur 'c' .
Exemple: :.,300s/Pattern//gc
Cette commande va chercher à partir de la position du curseur Jusqu'à la ligne 300 pour "Motif". Lors du match, vous pouvez taper 'Q' pour arrêter ou 'n' pour rechercher le prochain Match.
Si les marques indiquent a et b, la recherche peut être limitée à la région située entre a et b en utilisant
/\%>'a\%<'bSearchText
Ceci peut être simplifié avec une cmap
cmap vmsab /\%>'a\%<'b
cmap vmscd /\%>'c\%<'d
En utilisant plug-in Narrow Region nous pouvons ouvrir un tampon temporaire avec la plage que nous devons rechercher ou modifier
:900,1000NarrowRegion
Ensuite, nous pouvons faire une recherche
/thing
Ou un changement et réécrire le tampon
:%s/this/that/g
:wq