Faites correspondre deux espaces avec une recherche incrémentielle

20

Lors de la recherche avec:

C-s SPC SPC

Correspond également aux espaces simples. Je veux faire correspondre exactement deux espaces.

Rovanion
la source

Réponses:

24

Utilisez M-s SPCpendant Isearch pour basculer littéralement les espaces correspondants. Lors d'une correspondance littérale, chaque caractère que SPCvous tapez est mis en correspondance individuellement. (C'était le comportement par défaut d'Emacs, BTW.)

Pour configurer cette option search-whitespace-regexpcomme option de personnalisation du comportement par défaut nil. ( M-x customize-option search-whitespace-regexp.)

Voir le manuel GNU Emacs, node Special Isearch.

A dessiné
la source
Merci pour cela. Cela pourrait être bien de mettre la ligne .emacs (set-variable 'search-whitespace-regexp nil)dedans. Merci.
Gray
1
@Gray: set-variablen'enregistre pas la nouvelle valeur de manière persistante, donc cela ne changera pas le comportement par défaut. Je pense que M-x customize-optionc'est ce qui est demandé ici.
Drew
Oh j'en parlais dans le fichier dot emacs. Je ne connaissais pas l'option de personnalisation. Merci d'avoir édité.
Gray
3

L'utilisation de la recherche incrémentielle regexp résout le problème si vous échappez les caractères d'espace:

C-M-s \SPC\SPC

Vous pouvez également utiliser la recherche et le remplacement sans les barres obliques inverses, si c'est ce que vous recherchez:

M-% SPC SPC
Rovanion
la source
J'ai rencontré le même problème aujourd'hui lors de la création d'une macro de clavier. Cette réponse a résolu le problème pour moi, même si j'ai dû utiliser la combinaison de touches à la ESC C-splace. Voir aussi github.com/leoliu/ggtags/issues/64
Jonas Dahlbæk
3

L'utilisation de la recherche d'expression régulière aide, mais vous pouvez également vous assurer des espaces littéraux pour la recherche en utilisant C-q SPCpour citer un espace dans la recherche.

Pour riffer la réponse de @ Rovanion alors, en utilisant isearch-forward-regexp:

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

Cela recherchera deux espaces consécutifs. Fait intéressant, isearch-forward-regexpnécessite des correspondances discrètes. Recherche aaapour aane pas une fois de plus correspondre au deuxième caractère.

dgtized
la source
En ce qui concerne votre dernière note, imaginez que vous recherchez "zéro ou plusieurs espaces blancs suivis d'une chose" et, étant donné N caractères des espaces blancs de tête, vous devez parcourir toutes les correspondances individuelles N + 1. Je peux voir que c'est une option raisonnable à fournir, mais ce serait un terrible défaut.
phils