Ordne zwei Leerzeichen einer inkrementellen Suche zu

20

Bei der Suche mit:

C-s SPC SPC

Passt auch zu einzelnen Leerzeichen. Ich möchte genau zwei Leerzeichen abgleichen.

Rovanion
quelle

Antworten:

24

Verwenden Sie diese M-s SPCOption während der Suche, um das passende Leerzeichen buchstäblich umzuschalten. Beim wörtlichen Abgleichen wird jedes SPCeingegebene Zeichen einzeln abgeglichen. (Dies war früher das Standardverhalten von Emacs, übrigens.)

Um dies als Standardverhalten zu konfigurieren, passen Sie die Option search-whitespace-regexpan nil. ( M-x customize-option search-whitespace-regexp.)

Siehe das GNU Emacs-Handbuch, node Special Isearch.

Drew
quelle
Danke dafür. Könnte gut sein, die .emacs-Zeile tatsächlich dort hinein zu setzen (set-variable 'search-whitespace-regexp nil). Vielen Dank.
Grey
1
@Gray: set-variablespeichert den neuen Wert nicht dauerhaft, sodass sich das Standardverhalten nicht ändert. Ich denke, das M-x customize-optionist es, was hier verlangt wird.
Drew
Oh, ich habe darüber in der Dot-Emacs-Datei gesprochen. Wusste nicht, wie man Optionen anpasst. Vielen Dank für die Bearbeitung.
Gray
3

Die Verwendung der inkrementellen Suche regexp löst das Problem, wenn Sie die Leerzeichen umgehen:

C-M-s \SPC\SPC

Sie können Suchen und Ersetzen auch ohne die umgekehrten Schrägstriche verwenden, wenn Sie danach suchen:

M-% SPC SPC
Rovanion
quelle
Ich bin heute beim Erstellen eines Tastaturmakros auf dasselbe Problem gestoßen. Diese Antwort löste das Problem für mich, obwohl ich ESC C-sstattdessen die Tastenkombination verwenden musste. Siehe auch github.com/leoliu/ggtags/issues/64
Jonas Dahlbæk
3

Die Verwendung der regulären Suche hilft, aber Sie können auch sicherstellen, dass für die Suche wörtliche Leerzeichen vorhanden sind, indem Sie C-q SPCein Leerzeichen in die Suche einfügen .

Um die Antwort von @ Rovanion abzusprechen, verwenden Sie isearch-forward-regexp:

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

Das wird nach zwei aufeinanderfolgenden Leerzeichen suchen. Interessanterweise isearch-forward-regexperfordert diskrete Übereinstimmungen. Die Suche aaanach aastimmt nur einmal überein und nicht erneut mit dem zweiten Zeichen.

dgtized
quelle
Stellen Sie sich in Bezug auf Ihre letzte Notiz vor, Sie suchen nach "null oder mehr Leerzeichen, gefolgt von einem Punkt" und müssen bei N führenden Leerzeichen alle N + 1 einzelnen Übereinstimmungen durchgehen. Ich kann sehen, dass dies eine vernünftige Option ist , aber es wäre ein schrecklicher Ausfall.
Phils