Dopasuj dwie spacje za pomocą wyszukiwania przyrostowego

20

Podczas wyszukiwania za pomocą:

C-s SPC SPC

Dopasowuje także pojedyncze spacje. Chcę dopasować dokładnie dwie spacje.

Rovanion
źródło

Odpowiedzi:

24

Użyj M-s SPCpodczas wyszukiwania, aby dosłownie przełączać pasujące białe znaki. Przy dosłownym dopasowaniu każdy SPCwpisany znak jest dopasowywany indywidualnie. (To było kiedyś domyślne zachowanie Emacsa, BTW.)

Aby skonfigurować to jako domyślne zachowanie, dostosuj opcję search-whitespace-regexpdo nil. ( M-x customize-option search-whitespace-regexp.)

Zobacz instrukcję GNU Emacs, węzeł Special Isearch.

Rysował
źródło
Dzięki za to. Może być dobrze umieścić tam linię .emacs (set-variable 'search-whitespace-regexp nil). Dzięki.
Gray
1
@Gray: set-variablenie zapisuje nowej wartości na stałe, więc nie zmieni to domyślnego zachowania. Myślę, że o M-x customize-optionto tu chodzi.
Drew
Och, mówiłem o tym w pliku emacsa. Nie wiedziałem o opcji dostosowywania. Dzięki za edycję.
Gray
3

Użycie wyrażenia regularnego wyrażenia regularnego regexp rozwiązuje problem, jeśli unikniesz spacji:

C-M-s \SPC\SPC

Możesz także użyć wyszukiwania i zamień bez ukośników odwrotnych, jeśli tego właśnie szukasz:

M-% SPC SPC
Rovanion
źródło
Ten sam problem napotkałem dzisiaj podczas budowania makra klawiatury. Ta odpowiedź rozwiązała dla mnie problem, chociaż ESC C-szamiast tego musiałem użyć kombinacji klawiszy . Zobacz także github.com/leoliu/ggtags/issues/64
Jonas Dahlbæk
3

Korzystanie z wyszukiwania wyrażenia regularnego pomaga, ale możesz także upewnić się, że w wyszukiwaniu znajdują się dosłowne spacje, używając C-q SPCcudzysłowu w wyszukiwaniu.

Aby następnie usunąć odpowiedź @ Rovanion przy użyciu isearch-forward-regexp:

C-M-s C-q SPC C-q SPC

To wyszuka dwa kolejne spacje. Co ciekawe, isearch-forward-regexpwymaga dyskretnych dopasowań. Szukając aaadla aadopasuje tylko raz, a nie znowu na drugim znaku.

zdeterminowany
źródło
Jeśli chodzi o ostatnią nutę, wyobraź sobie, że szukasz „zero lub więcej białych znaków, po których następuje rzecz” i, biorąc pod uwagę N znaków wiodących białych znaków, musisz przejść przez wszystkie pojedyncze N + 1 dopasowania. Widzę, że jest to rozsądna opcja , ale byłoby to straszne niewykonanie zobowiązania.
phils,