Cuando hago M-x query-replace
para reemplazar todas las apariciones de v
by w
, entonces también coincide V
(mayúscula V
). ¿Cómo forzar a emacs a encontrar solo minúsculas v
?
Cuando hago M-x query-replace
para reemplazar todas las apariciones de v
by w
, entonces también coincide V
(mayúscula V
). ¿Cómo forzar a emacs a encontrar solo minúsculas v
?
Respuestas:
(customize-set-variable case-fold-search nil)
O vincule esa variable (opción) en su propio comando que, de lo contrario, es solo un contenedor query-replace
. Esto tiene la ventaja de que no cambia el valor de la variable para uso general, fuera del reemplazo de consultas.
Vea también variable case-replace
, que controla el caso para el texto de reemplazo.
Vea también C-h f query-replace
, donde dice, por ejemplo:
La coincidencia es independiente del caso si
case-fold-search
no es nula y FROM-STRING no tiene letras mayúsculas. Reemplazar transfiere el patrón de mayúsculas y minúsculas del texto antiguo al texto nuevo, sicase-replace
ycase-fold-search
no son nulos y FROM-STRING no tiene mayúsculas
Vea también los comentarios a continuación, y el error Emacs # 20687 , donde muestra cómo puede parchar perform-replace
para permitirle alternar el plegado de la caja durante query-replace
.
Tenga en cuenta también que el código existente para perform-replace
enlaces case-fold-search
de esta manera (tenga en cuenta las variables de las que depende):
(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
sobre la marcha como podemos hacer durante el isearch
uso de la M-c
unión. Pero desafortunadamente query-replace
tiene su mapa de modos.
query-replace-map
: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
y (define-key query-replace-map "C" 'toggle-case)
. Pero el manejo de claves en ese mapa está codificado perform-replace
. Es posible que desee M-x report-emacs-bug
, para que el perform-replace
código sea más abierto, de modo que se puedan agregar claves al mapa. Al menos debería tener una cláusula alternativa que solo invoque el cmd vinculado a la clave.
query-replace-map
antes.
perform-replace
para agregar una cond
cláusula adicional que invoque la clave que ha definido query-replace-map
. Ponga la nueva cláusula justo antes de la t
cláusula general. Esta es la nueva cláusula: (def (call-interactively def))
. No podría ser más simple.
(customize-set-variable case-fold-search nil)
da el error customize-set-variable: Attempt to set a constant symbol: nil
. También probé tanto (setq case-fold-search nil)
, y (setq case-replace nil)
aunque la consulta aún coincidir con el V. mayúscula