Kiedy zrobić M-x query-replace
, aby zastąpić wszystkie wystąpienia v
przez w
, to również mecze V
(wielkimi literami V
). Jak zmusić emacsa do wyszukiwania małych liter v
?
query-replace
case-folding
Nazwa
źródło
źródło
Odpowiedzi:
Lub powiąż tę zmienną (opcję) w swoim własnym poleceniu, które w przeciwnym razie jest tylko opakowaniem
query-replace
. Ma to tę zaletę, że nie zmienia wartości zmiennej do ogólnego użytku poza zastępowaniem zapytań.Zobacz także zmienna
case-replace
, która kontroluje wielkość liter dla tekstu zastępczego.Zobacz także
C-h f query-replace
tam, gdzie jest napisane, na przykład:Zobacz także poniższe komentarze i błąd Emacsa # 20687 , w którym pokazano, jak można załatać,
perform-replace
aby umożliwić przełączanie składania skrzynek podczasquery-replace
.Zauważ też, że istniejący kod dla
perform-replace
powiązańcase-fold-search
w ten sposób (zwróć uwagę na zmienne, od których zależy):źródło
case-fold-search
w locie, jak możemy to zrobić podczasisearch
korzystania zM-c
wiązania. Ale niestetyquery-replace
ma swoją mapę trybów.query-replace-map
:(defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
i(define-key query-replace-map "C" 'toggle-case)
. Ale obsługa kluczy na tej mapie jest na stałe zakodowanaperform-replace
. Możesz chciećM-x report-emacs-bug
, abyperform-replace
kod był bardziej otwarty, aby klucze mogły być dodawane do mapy. Powinien mieć przynajmniej klauzulę rezerwową, która po prostu wywołuje cmd powiązane z kluczem.query-replace-map
.perform-replace
aby dodać dodatkowącond
klauzulę, która wywołuje zdefiniowany kluczquery-replace-map
. Umieść nową klauzulę tuż przed klauzulą catch-allt
. Jest to nowa klauzula:(def (call-interactively def))
. Nie może być prościej.(customize-set-variable case-fold-search nil)
daje błądcustomize-set-variable: Attempt to set a constant symbol: nil
. Również próbowałem zarówno(setq case-fold-search nil)
i(setq case-replace nil)
ale kwerenda jeszcze dopasować wielką V.