Search code examples
regexvimreplacefindcapitalize

Capitalize first letter of each word in a selection using Vim


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 this

hello world from stack overflow

to

Hello World From Stack Overflow

how should I do it in Vim?


Solution

  • 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 left-hand side
    • g means substitute all matches, not only the first