Tip #298: Changing case with regular expressions
tip karma |
Rating 16/10, Viewed by 641
|
created: |
|
August 5, 2002 10:41 |
|
complexity: |
|
intermediate |
author: |
|
Jonathan McPherson |
|
as of Vim: |
|
5.7 |
I stumbled across this factoid on a website about vi. I haven't been able to locate it in the Vim documentation, but it works in Vim, and it's very handy.
There are times that you might like to go through a file and change the case of characters that match some arbitrary criteria. If you understand regular expressions well, you can actually do this fairly easily.
It's as simple as placing \U or \L in front of any backreferences in your regular expressions. Vim will make the text in the backreference uppercase or lowercase (respectively).
(A "backreference" is a part of a regular expression that refers to a previous part of a regular expression. The most common backrefernces are &, \1, \2, \3, ... , \9).
Some examples that demonstrate the power of this technique:
Lowercase the entire file -
:%s/.*/\L&/g
(& is a handy backreference that refers to the complete text of the match.)
Uppercase all words that are preceded by a < (i.e. opening HTML tag names):
:%s/<\(\w*\)/<\U\1/g
Please add a note if you know where this is in the documentation. I have done Ctrl-D searches on upper, lower, \U, and \L with no luck.
<<Start in insert mode without loosing your escape key |
Open file under cursor. >>
Additional Notes
|