Wyszukaj ciąg ignorujący nowe linie

11

Jestem przyzwyczajony do pisania plików, w których akapity są podzielone na kilka wierszy, np fill-column. Za pomocą . Kiedy szukam ciągu ( C-s) takiego jak this is a long text, wyniki wyszukiwania nie zwrócą lokalizacji, w których pojawia się ciąg z przerwą między dwoma słowami (jak this\nis a long text).

Czy istnieje polecenie, które również zwróci te wyniki?

Tony
źródło

Odpowiedzi:

11

Spójrz na zmiennych isearch-lax-whitespace, isearch-regexp-lax-whitespaceoraz search-whitespace-regexp.

Jeśli dwie pierwsze zmienne są ustawione na coś innego niż zero (np. t), Dowolny znak spacji w ciągu wyszukiwania będzie pasował do dowolnej sekwencji pasującej do wyrażenia regularnego zdefiniowanego przez search-whitespace-regexpzmienną.

Aby dopasować słowa do podziału linii, wykonaj następujące czynności:

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

Znak spacji w zapytaniu będzie teraz pasował dowolną spację, tabulator lub podział wiersza dowolną liczbę razy.

rekado
źródło
Dzięki, ale to nie działa dla mnie. Moja wersja Emacsa to 23.4.1. Najwyraźniej nie ma zmiennej „isearch-lax-whitespace”.
Tony,
1
Tak, te funkcje zostały wprowadzone w Emacs 24.3. Czy jest jakaś szansa na aktualizację do nowszej wersji? Wersja 23.4.1 ma już ponad trzy lata.
rekado
2
Spróbuj isearch-forward-word, co wiąże się M-s wz najnowszymi Emacsem.
politza
Emacs 23 nie działał dla mnie, upewnij się, że używasz 24.
ragerdl