Comment puis-je rechercher une chaîne entre certains numéros de ligne?

15

C'est un problème que j'ai eu récemment. J'ai un fichier avec plusieurs centaines de lignes de texte. Comment puis-je rechercher une chaîne entre deux numéros de ligne spécifiques? Par exemple, je veux rechercher entre les numéros de ligne 100 et 325.

Seth
la source

Réponses:

7
:100,235g/foo/#<CR>

puis appuyez sur :147<CR>pour passer à la ligne souhaitée.

Vous pouvez également utiliser :ilist:

:100,235il foo<CR>

Voir :help range, :help :globalet :help :ilist.

romainl
la source
5

Il existe une autre façon de rechercher entre des lignes particulières.

/%>{linenumber}l\%<{linenumber}{pattern}

Exemple:

/%>199l\%<300lgood

Cela recherchera de la ligne 200 à 299 le motif «bon».

%>199l - l is for line, >199 denotes the lines greater than 199
SibiCoder
la source
2
100GV325G<esc>
/\v%Vpattern
  • 100GV325G<esc>sélectionner visuellement les lignes de 100 à 325, revenir en normalmode.
  • /\v%Vpatternutiliser :h /\%Vpour limiter les plages de recherche à la dernière zone visuelle.

Si votre motif contient une nouvelle ligne, vous devez en ajouter un autre \%Vpour limiter la fin du motif dans la zone visuelle:

100GV325G<esc>
/\v%Vpattern%V
  • :h /\%V
dedowsdi
la source
1

Parfois, vous devez rechercher un symbole donné dans une fonction / méthode

  void f(bool b)
  {
    b;
    b;
  }

  void g(bool b)
  {
    b;  
    b;  
    b;  
    b;  
  }

Afin de rechercher bdans f()seulement:

  • aller à {def()
  • entrer en mode visuel avec V
  • aller à la fin de f()'%'
  • allez sur la ligne exec avec la commande ':'.
  • une fois que vous êtes en entrée de ligne de commande il bpour obtenir :'<,'>il b

Après <CR>(entrer), vous obtenez

b.cpp
  1:   15     b;
  2:   16     b;
Press ENTER or type command to continue
dmytro.poliarush
la source
Bienvenue à Vi et Vim ! En quoi est-ce substantiellement différent de la réponse de romainl?
D. Ben Knoble
Merci! Tout d'abord, je pense que les personnes nouvelles sur vim et non familiarisées avec %le mode visuel peuvent les trouver utiles. Deuxièmement, il n'est pas nécessaire de saisir explicitement la plage de lignes.
dmytro.poliarush
1
D'accord, alors je suggérerais d'expliquer en quoi leur utilisation est pertinente et de saisir leilist
D. Ben Knoble