16

In vim, I know I can search with or without case sensitivity. But if I want to search for a string in either upper or lower case, and replace it with a replacement of the same case, is that possible in a single :s///?

For example, I want to change these lines:

short
Short
SHORT

to

long
Long
LONG

I can do this in three :s commands, or one insensitive :s and go fix the cases manually, but is there a better way? A case-preserving search and replace?

2 Answers 2

7

You can try this plugin.

https://github.com/tpope/vim-abolish

This plugin can help you to match not just the case sensitive text, also its variants too. Like /good{,ies} will match both good as well as goodies.

Similarly, it can replace with case sensitive as well as variant included.

      :%S/long/short/g

will replace long with short, Long with Short, LONG with SHORT.

3

There isn't a native feature of :s that does this as far as I know, but if you're willing to install add-ons, you could look at Michael Geddes' keepcase plugin.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .