Wenn ich tue M-x query-replace
, um alle Vorkommen von v
durch zu ersetzen w
, dann stimmt es auch überein V
(Großbuchstaben V
). Wie man Emacs zwingt, nur Kleinbuchstaben zu finden v
?
15
Wenn ich tue M-x query-replace
, um alle Vorkommen von v
durch zu ersetzen w
, dann stimmt es auch überein V
(Großbuchstaben V
). Wie man Emacs zwingt, nur Kleinbuchstaben zu finden v
?
Antworten:
Oder binden Sie diese Variable (Option) in Ihrem eigenen Befehl, der sonst nur ein Wrapper ist
query-replace
. Dies hat den Vorteil, dass der Variablenwert für die allgemeine Verwendung außerhalb des Ersetzens von Abfragen nicht geändert wird.Siehe auch Variable
case-replace
, die Groß- und Kleinschreibung für den Ersetzungstext steuert.Siehe auch
C-h f query-replace
, wo es heißt, zum Beispiel:Siehe auch die Kommentare unten und den Emacs-Fehler Nr. 20687 , in dem gezeigt wird, wie Sie patchen können
perform-replace
, um das Falten von Groß- und Kleinschreibung während des Patchens umzuschaltenquery-replace
.Beachten Sie auch, dass der vorhandene Code für
perform-replace
Bindungencase-fold-search
auf diese Weise (beachten Sie die Variablen, von denen es abhängt):quelle
case-fold-search
, wie wir es bei derisearch
Verwendung derM-c
Bindung tun können . Hat aber leiderquery-replace
seine mode map.query-replace-map
:(defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
und(define-key query-replace-map "C" 'toggle-case)
. Der Umgang mit Schlüsseln in dieser Karte ist jedoch fest programmiertperform-replace
. Möglicherweise möchten SieM-x report-emacs-bug
, dass derperform-replace
Code offener wird, damit Schlüssel zur Karte hinzugefügt werden können. Zumindest sollte es eine Fallback-Klausel geben, die nur den an den Schlüssel gebundenen Befehl aufruft.query-replace-map
.perform-replace
, um eine zusätzlichecond
Klausel hinzuzufügen , die den von Ihnen definierten Schlüssel aufruftquery-replace-map
. Setzen Sie die neue Klausel direkt vor die Catch-All-t
Klausel. Dies ist die neue Klausel:(def (call-interactively def))
. Einfacher geht es nicht.(customize-set-variable case-fold-search nil)
gibt den Fehler auscustomize-set-variable: Attempt to set a constant symbol: nil
. Auch ich habe beide ausprobiert(setq case-fold-search nil)
und(setq case-replace nil)
aber die Abfrage stimmt immer noch mit dem Großbuchstaben V überein.