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?

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.