Wie kann ich nach einer Zeichenfolge zwischen bestimmten Zeilennummern suchen?


15

Dies ist ein Problem, das ich vor kurzem hatte. Ich habe eine Datei mit mehreren hundert Textzeilen. Wie kann ich nach einer Zeichenfolge zwischen zwei bestimmten Zeilennummern suchen? Zum Beispiel möchte ich zwischen den Zeilennummern 100 und 325 suchen.

Antworten:


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

Drücken Sie dann :147<CR>, um zur gewünschten Zeile zu springen.

Sie können auch verwenden :ilist:

:100,235il foo<CR>

Siehe :help range, :help :globalund :help :ilist.


5

Es gibt eine andere Möglichkeit, zwischen bestimmten Zeilen zu suchen.

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

Beispiel:

/%>199l\%<300lgood

Dadurch wird von Zeile 200 bis 299 nach dem Muster 'gut' gesucht.

%>199l - l is for line, >199 denotes the lines greater than 199

2
100GV325G<esc>
/\v%Vpattern
  • 100GV325G<esc>Wählen Sie visuell Linien von 100 bis 325 aus und kehren Sie in den normalModus zurück.
  • /\v%VpatternVerwenden Sie :h /\%Vdiese Option, um die Suchbereiche auf den letzten sichtbaren Bereich zu beschränken.

Wenn Ihr Muster einen Zeilenvorschub enthält, müssen Sie einen weiteren hinzufügen \%V, um das Musterende im visuellen Bereich einzuschränken:

100GV325G<esc>
/\v%Vpattern%V
  • :h /\%V

1

Manchmal müssen Sie innerhalb einer Funktion / Methode nach einem bestimmten Symbol suchen

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

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

Um zu suchen bin f()nur:

  • gehe zu {vonf()
  • Mit in den visuellen Modus wechseln V
  • gehe zum Ende von f()mit '%'
  • Gehe mit ':' in die Exec-Zeile.
  • wenn Sie in der Befehlszeile eingegeben werden il bzu erhalten :'<,'>il b

Nach dem <CR>Eintreten bekommen Sie

b.cpp
  1:   15     b;
  2:   16     b;
Press ENTER or type command to continue

Willkommen bei Vi und Vim ! Wie unterscheidet sich das wesentlich von Romainls Antwort?
D. Ben Knoble

Vielen Dank! Erstens glaube ich, dass Leute, die noch nicht mit Vim %und Visual Mode vertraut sind, sie nützlich finden können. Zweitens muss der Zeilenbereich nicht explizit eingegeben werden.
dmytro.poliarush

1
Ok, dann würde ich vorschlagen, zu erklären, wie ihre Verwendung relevant ist und wie sie ilist
D. Ben Knoble
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.