
Ich verwende ein kleines Programm, das ich geschrieben habe, das ein reguläres Ausdrucksmuster als Parameter verwendet und über 2000 Dateien durchsucht. Die Dateien befinden sich in einer Verzeichnishierarchie.
Das Muster kann in mehreren Dateien und in jeder Datei mehrfach vorkommen. Nachdem die Dateinamen und die Zeilen gefunden wurden, in denen das Muster vorkommt, ruft das Programm die erste Zeilennummer und alle gefundenen Dateinamen vi
auf .+line
Jetzt funktioniert alles, aber einmal habe ich versucht, +line
für jede Datei ( vi +2 x1 +5 x2
) anzugeben, aber dadurch landet der Cursor auf Zeile 5 in x1
und auf Zeile 1 in x2
, was nicht das war, was ich wollte, also habe ich die Idee verworfen.
Die Muster sind oft komplex und ich möchte sie nicht zweimal eingeben, daher verwende ich jetzt manchmal Kopieren und Einfügen, um nach der nächsten Zeile zu suchen vi
. Toll wäre es, den vi
Suchverlauf mit dem Muster einzurichten, dann könnte ich /+ ↑+ verwenden Return, ohne erneut einzugeben oder zu kopieren/einzufügen, um alle Muster zu finden. Ich kann dann verwenden, :n!
um zur nächsten Datei zu gehen und mit dem Muster weiterzumachen.
.viminfo
Es sieht so aus, als wäre das Muster in meinem Verzeichnis gespeichert . Kann ich diese Datei einfach vor dem Start aktualisieren vi
oder gibt es dafür eine Bibliothek oder ein Befehlszeilenprogramm?
Antwort1
Es ist nicht erforderlich, die ~/.viminfo
Datei zu patchen.
Wie bei Verwendung vim
können Sie die +/pattern
Befehlszeilenoption verwenden, um den Cursor auf die Zeile des Musters zu setzen. Danach können Sie verwenden, num zu den folgenden Vorkommen zu gelangen (wenn nicht am Anfang der Zeile, ist es das erste, andernfalls das zweite Vorkommen).
Auf der Manpage steht, dass der Cursor beim ersten Vorkommen des Musters steht, aber meiner Erfahrung nach steht er beim ersten Zeichen der Zeile mit diesem Muster. Von der vim
man
Seite:
+/{pat} For the first file the cursor will be positioned on the
first occurrence of {pat}. See ":help search-pattern" for
the available search patterns.