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.

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.


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

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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.