Как вы сообщаете Emacs оставить вопрос в одиночку в поиске и заменить строку?

Я пытаюсь выполнить поиск в регулярном выражении и заменить его в Emacs (используя M-x query-replace-regexp), но обычно полезный смарт-случай мешает. Мой источник:

One
Two
Three

И я хочу заменить каждую строку чем-то вроде <item name="One"/>. К сожалению, столица в начале каждой строки неверно истолкована, и я получаю <Item> с прописным, который я не хочу.

Я могу найти примеры того, как сделать регистр поиска чувствительным, и как сохранить \1 в нижнем регистре в заменяющей строке, но ничего о том, как сохранить всю заменяющую строку case-unmodified.

Ответ 1

Попробуйте добавить это в ваш .emacs:

(setq case-replace nil)

C-h v case-replace RET:

Документация: Non-nil означает, что `query-replace 'должен сохранять регистр в замены.

И ссылка на руководство для Replace Commands and Case описывает все взаимодействия с регистром и соответствующими переменными.

Или вы можете определить новую команду, например:

(defun query-replace-no-case ()
   (interactive)
   (let ((case-replace nil))
       (call-interactively 'query-replace))))

И, если вы кодировали это в функции и только хотели временно установить переменную, вы бы сделали что-то вроде:

(let ((case-replace nil))
   (while (search-forward ...)
       (replace-match ...)))

Ответ 2

В текущем emacs вы можете найти этот параметр в меню Параметры. Сохраните параметры, если хотите, через одно и то же меню.