Capitalize first letter of each word in a selection using vim

keelar picture keelar · Jul 3, 2013 · Viewed 34.8k times · Source

In vim, I know we can use ~ to capitalize a single char (as mentioned in this question), but is there a way to capitalize the first letter of each word in a selection using vim?

For example, if I would like to change from

hello world from stackoverflow

to

Hello World From Stackoverflow

How should I do it in vim?

Answer

Rohit Jain picture Rohit Jain · Jul 3, 2013

You can use the following substitution:

s/\<./\u&/g
  • \< matches the start of a word
  • . matches the first character of a word
  • \u tells Vim to uppercase the following character in the substitution string (&)
  • & means substitute whatever was matched on the LHS