Cuando hago M-x query-replacepara reemplazar todas las apariciones de vby 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-replacepara reemplazar todas las apariciones de vby 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-searchno 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-replaceycase-fold-searchno 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-replacepara permitirle alternar el plegado de la caja durante query-replace.
Tenga en cuenta también que el código existente para perform-replaceenlaces case-fold-searchde 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-searchsobre la marcha como podemos hacer durante el isearchuso de la M-cunión. Pero desafortunadamente query-replacetiene 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-replacecó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-mapantes.
perform-replacepara agregar una condcláusula adicional que invoque la clave que ha definido query-replace-map. Ponga la nueva cláusula justo antes de la tclá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