Lorsque je fais M-x query-replace
pour remplacer toutes les occurrences de v
par w
, cela correspond également à V
(majuscule V
). Comment forcer emacs à ne trouver que des minuscules v
?
Lorsque je fais M-x query-replace
pour remplacer toutes les occurrences de v
par w
, cela correspond également à V
(majuscule V
). Comment forcer emacs à ne trouver que des minuscules v
?
Réponses:
(customize-set-variable case-fold-search nil)
Ou liez cette variable (option) dans votre propre commande qui est autrement juste un wrapper query-replace
. Cela a l'avantage de ne pas modifier la valeur de la variable pour une utilisation générale, en dehors du remplacement de requête.
Voir aussi variable case-replace
, qui contrôle la casse du texte de remplacement.
Voir aussi C-h f query-replace
, où il est écrit, par exemple:
La correspondance est indépendante de la casse si elle
case-fold-search
est non nulle et FROM-STRING n'a pas de lettres majuscules. Le remplacement transfère le modèle de casse de l'ancien texte vers le nouveau texte, sicase-replace
etcase-fold-search
sont non nuls et FROM-STRING n'a pas de majuscule
Voir également les commentaires ci-dessous et le bogue Emacs n ° 20687 , où vous apprendrez comment vous pouvez corriger perform-replace
pour vous permettre de basculer le pliage de cas pendant query-replace
.
Notez également que le code existant pour les perform-replace
liaisons case-fold-search
de cette manière (notez les variables dont il dépend):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-search
à la volée comme on peut le faire lors de l' isearch
utilisation de la M-c
reliure. Mais malheureusement, query-replace
a sa carte de mode.
query-replace-map
: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
et (define-key query-replace-map "C" 'toggle-case)
. Mais la gestion des clés dans cette carte est codée en dur perform-replace
. Vous voudrez peut-être M-x report-emacs-bug
, pour que le perform-replace
code soit plus ouvert, afin que des clés puissent être ajoutées à la carte. Il devrait au moins avoir une clause de secours qui invoque simplement le cmd lié à la clé.
query-replace-map
avant.
perform-replace
pour ajouter une cond
clause supplémentaire qui invoque la clé que vous avez définie dans query-replace-map
. Placez la nouvelle clause juste avant la t
clause catch-all . Voici la nouvelle clause: (def (call-interactively def))
. Rien de plus simple.
(customize-set-variable case-fold-search nil)
donne l'erreur customize-set-variable: Attempt to set a constant symbol: nil
. J'ai aussi essayé les deux (setq case-fold-search nil)
et (setq case-replace nil)
mais la requête correspond toujours au V. majuscule