Wenn ich ein LaTeX-Dokument in vim bearbeite, möchte ich häufig nach einer Phrase suchen. Da ich LaTeX zum Zeilenumbruch eingerichtet habe, befindet sich manchmal die Hälfte der Phrase in einer Zeile, während sich die andere Hälfte in der nächsten befindet. In einem solchen Fall findet die Suche nicht das, wonach ich suche. Also zum Beispiel
blah blah blah hello
world blah blah blah
Bei der Suche mit /hello world
finde ich nicht, wonach ich suche. Gibt es eine schnelle und einfache Möglichkeit, diese Suche zu ändern, um mich dahin zu bringen, wo ich sein möchte? Oder noch besser, eine Möglichkeit, vim anzuweisen, Leerzeichen (Leerzeichen, Tabulatorzeichen, neue Zeile) mit Leerzeichen in der Suchzeichenfolge abzugleichen?
hello\_s\+world
dass mehr als ein Leerzeichen dazwischen steht.Dieses Problem wurde unter http://vim.wikia.com/wiki/Search_across_multiple_lines behoben . Enthalten ist eine Funktion, die das kann, was ich brauche.
Dann können Sie eine mehrzeilige Suche mit durchführen
:S hello world
und diese in konvertierenhello\s\+world
und danach suchen. Ein weiteres nettes Feature ist, dass dadurch auch diese neue Suche zum Suchverlauf hinzugefügt wird. Auf diese Weise können Sie zurückgehen und die Sucheq/
bei Bedarf mit ändern . Es kann auch zum Ersetzen mit verwendet werden:%s//new thing/g
. Der Nachteil ist, dass es nicht verwendet wird,incsearch
wenn Sie es aktiviert haben.quelle
Die Art, wie ich sie kenne, ist nicht schwer, aber ein bisschen langweilig. Ersetzen Sie jedes Leerzeichen in Ihrer Suchanfrage durch Folgendes:
(Beachten Sie das Leerzeichen nach dem
[
.) Dies ist die Übereinstimmungssyntax für reguläre Ausdrücke. Aufgeschlüsselt bedeutet es:[...]
bedeutet, dass ein beliebiges Zeichen aus der Liste der Zeichen in den Klammern gefunden wird.\t
ist Tab\n
ist Newline...\+
bedeutet Übereinstimmung mit einem oder mehreren der vorhergehenden.Für weitere Informationen zu regulären Ausdrücken können Sie vim fragen:
quelle
Ich persönlich würde
[ \t\n]*
anstelle von Leerzeichen verwenden. Dies wird auf null oder mehr von '', tab und newline passen. Wenn sich eine Instanz Ihres Suchmusters über einen Zeilenumbruch erstreckt, eine andere jedoch nicht, werden beide gefunden.quelle