You can change the case of text:
- Toggle case "
HellO" to "
g~then a movement.
- Uppercase "
HellO" to "
gUthen a movement.
- Lowercase "
HellO" to "
guthen a movement.
Alternatively, you can visually select text then press
~ to toggle case, or
U to convert to uppercase, or
u to convert to lowercase.
- Toggle case of the character under the cursor, or all visually-selected characters.
- Toggle case of the next three characters.
- Toggle case of the next three words.
- Toggle case of the current word
- Toggle case of all characters to end of line.
- Toggle case of the current line
The above uses ~ to toggle case. In each example, you can replace ~ with u to convert to lowercase, or with U to convert to uppercase. For example:
- Uppercase the visually-selected text.
- Change the current line to uppercase
- Change current word to uppercase.
- Lowercase the visually-selected text.
The</code> substitute command can change case
The following converts the current line to Title Case (all lowercase, except for initial uppercase letters):
Explanation The search pattern is
which searches for <code> then <code> (a word character), then
\ (zero or more word characters), then
(end of word). The
create subexpressions to be recalled with
and <code>in the replacement. The replacement is <code><code> which substitutes the two subexpressions transformed: The <code> converts the first character of what follows to uppercase, while
converts all of what follows to lowercase.
With the following (for example, in vimrc), you can visually select text then press
~ to convert the text to
UPPER CASE, then to
lower case, then to
Title Case. Keep pressing
~ until you get the case you want.
function! TwiddleCase(str) if a:str ==# toupper(a:str) let result = tolower(a:str) elseif a:str ==# tolower(a:str) let result = substitute(a:str,'\(\<\w\+\>\)', '\u\1', 'g') else let result = toupper(a:str) endif return result endfunction vnoremap ~ ygv"=TwiddleCase(@")<CR>Pgv
The following will skip single-letter words and words that aren't in uppercase. It also accounts for non-english latin characters.
--Jenny 220.127.116.11 19:05, April 5, 2012 (UTC)
- Nice, thanks. I added
\Cto your command above to make the search case sensitive (it won't skip lowercase words if
'ignorecase'is set, unless
\Cis present). JohnBeckett 09:58, April 6, 2012 (UTC)