Suchen Sie nach Zeichenfolgen, die neue Zeilen ignorieren

11

Ich bin es gewohnt, Dateien zu schreiben, bei denen Absätze in mehrere Zeilen unterteilt sind, z fill-column. B. mit . Wenn ich nach einer Zeichenfolge ( C-s) this is a long textsuche, wie z. B. , geben die Suchergebnisse nicht die Stellen zurück, an denen die Zeichenfolge mit einem Zeilenumbruch zwischen zwei der Wörter (wie this\nis a long text) angezeigt wird .

Gibt es einen Befehl, der diese Ergebnisse ebenfalls zurückgibt?

Tony
quelle

Antworten:

11

Werfen Sie einen Blick auf die Variablen isearch-lax-whitespace, isearch-regexp-lax-whitespaceund search-whitespace-regexp.

Wenn die ersten beiden Variablen auf etwas gesetzt sind, das nicht Null ist (z. B. t), stimmt jedes Leerzeichen in Ihrer Suchzeichenfolge mit jeder Sequenz überein, die mit dem durch die search-whitespace-regexpVariable definierten regulären Ausdruck übereinstimmt.

Gehen Sie folgendermaßen vor, um Wörter über Zeilenumbrüche hinweg abzugleichen:

(setq isearch-lax-whitespace t)
(setq isearch-regexp-lax-whitespace t)
(setq search-whitespace-regexp "[ \t\r\n]+")

Ein Leerzeichen in Ihrer Abfrage stimmt jetzt beliebig oft mit einem Leerzeichen, einer Registerkarte oder einem Zeilenumbruch überein.

rekado
quelle
Danke, aber das funktioniert bei mir nicht. Meine Emacs-Version ist 23.4.1. Anscheinend gibt es keine Variable "isearch-lax-whitespace".
Tony
1
Ja, diese Funktionen wurden in Emacs 24.3 eingeführt. Gibt es eine Chance auf ein Upgrade auf eine neuere Version? Version 23.4.1 ist bereits älter als drei Jahre.
rekado
2
Versuchen Sie isearch-forward-word, was M-s win den letzten Emacs gebunden ist .
Politza
Emacs 23 hat bei mir nicht funktioniert, stellen Sie sicher, dass Sie 24 verwenden.
ragerdl