I'm trying to perform a regex search and replace in Emacs (using M-x query-replace-regexp
), but the usually helpful smart case is getting in the way. My source is:
One
Two
Three
And I want to replace each line with something like <item name="One"/>
instead. Unfortunately the capital at the start of each line is being misinterpreted, and I'm getting <Item>
with an uppercase that I don't want.
I can find examples about how to make the search case sensitive, and how to keep the \1
lowercase in the replacement string, but nothing about how to keep the entire replacement string case-unmodified.
Try adding this to your .emacs:
(setq case-replace nil)
C-h v case-replace RET:
Documentation: Non-nil means `query-replace' should preserve case in replacements.
And a link to the manual for Replace Commands and Case details all the interactions with case and the appropriate variables.
Or you could define a new command like:
(defun query-replace-no-case ()
(interactive)
(let ((case-replace nil))
(call-interactively 'query-replace))))
And, if you were coding this up in a function, and only wanted to set the variable temporarily, you'd do something like:
(let ((case-replace nil))
(while (search-forward ...)
(replace-match ...)))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With