Когда я делаю, M-x query-replace
чтобы заменить все вхождения v
на w
, то это также совпадает V
(в верхнем регистре V
). Как заставить emacs найти только строчные буквы v
?
15
Когда я делаю, M-x query-replace
чтобы заменить все вхождения v
на w
, то это также совпадает V
(в верхнем регистре V
). Как заставить emacs найти только строчные буквы v
?
Ответы:
Или свяжите эту переменную (опцию) в вашей собственной команде, которая в противном случае является просто оболочкой
query-replace
. Преимущество этого заключается в том, что он не изменяет значение переменной для общего использования, за исключением замены запросов.Смотрите также переменную
case-replace
, которая контролирует регистр для текста замены.Смотрите также
C-h f query-replace
, где написано, например:Смотрите также комментарии ниже и Emacs bug # 20687 , где показано, как вы можете вносить исправления,
perform-replace
чтобы позволить вам переключать сворачивание регистров во времяquery-replace
.Также обратите внимание, что существующий код для
perform-replace
привязокcase-fold-search
таким образом (обратите внимание на переменные, от которых он зависит):источник
case-fold-search
на лету, как мы можем сделать во времяisearch
использованияM-c
привязки. Но, к сожалениюquery-replace
, есть своя карта режимов.query-replace-map
:(defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
и(define-key query-replace-map "C" 'toggle-case)
. Но обработка ключей на этой карте жестко запрограммированаperform-replace
. Возможно, вы захотитеM-x report-emacs-bug
, чтобыperform-replace
код был более открытым, чтобы ключи можно было добавлять на карту. По крайней мере, в нем должно быть резервное предложение, которое просто вызывает cmd, связанный с ключом.query-replace-map
раньше.perform-replace
чтобы добавить дополнительноеcond
предложение, которое вызывает ключ, который вы определилиquery-replace-map
. Поместите новое предложение непосредственно передt
предложением всеобъемлющего. Это новый раздел:(def (call-interactively def))
. Не может быть проще.(customize-set-variable case-fold-search nil)
выдает ошибкуcustomize-set-variable: Attempt to set a constant symbol: nil
. Также я пробовал и то(setq case-fold-search nil)
и другое,(setq case-replace nil)
но запрос все еще соответствует заглавной букве V.