在Vim中更改大小写

595
在Vim中,有一个命令可以改变所选文本的大小写吗?

5
一个有用的链接:http://vim.wikia.com/wiki/Switching_case_of_characters - yuan
另请参阅此链接,了解在驼峰命名法和下划线命名法之间切换的方法:this - undefined
3个回答

794

选择文本后,按下U可转换为大写字母,按下u可转换为小写字母。要在选定的文本中交换所有的大小写,按下~(波浪号)。

若不使用可视化选择,gU<motion>将使得 motion 中的字符转为大写,或者使用gu<motion>来转换为小写。

想了解更多,请参考Vim的change.txt帮助文件中的第3节。


10
在实验中,似乎 g~<motion> 也可以起作用。可能需要补充一下,我通常只使用 ~ - trysis
31
这意味着我们可以使用gUiw将单词转换为大写。谢谢! - lucidbrot
4
Or gUw does it. - Ilias Karim
4
@Ilias Karim,不完全一样!如果你使用 gUw 而不是 iw,则只会从光标位置更改到单词结尾,且没有 i 表示内部。 - jens.klose

528

请参考以下方法:

 ~    : Changes the case of current character

 guu  : Change current line from upper to lower.

 gUU  : Change current LINE from lower to upper.

 guw  : Change to end of current WORD from upper to lower.

 guaw : Change all of current WORD to lower.

 gUw  : Change to end of current WORD from lower to upper.

 gUaw : Change all of current WORD to upper.

 g~~  : Invert case to entire line

 g~w  : Invert case to current WORD

 guG  : Change to lowercase until the end of document.

 gU)  : Change until end of sentence to upper case

 gu}  : Change to end of paragraph to lower case

 gU5j : Change 5 lines below to upper case

 gu3k : Change 3 lines above to lower case

1
在这种情况下,aw和iw命令会执行相同的操作,因为空格不区分大小写。我认为我们可以节省一个按键并选择命令的w版本。在这里使用aw有什么原因吗? - batbrat
18
guw会将当前位置到单词结尾的字母大小写翻转。而guawguiw则会将整个单词的大小写翻转。 - Victor Schröder
1
好的!只是补充一下,对于多个单词,先输入数字。例如,将光标处的单词和接下来的两个单词改为大写,3gUw。 - undefined

4
此外,虽然所有的内容都已经说完了,但这并不是为了视觉选择而言的:
有以下操作符:
用法:操作符 运动 请参见:h operator:h motion 操作符可以是:
c   change
d   delete
gu  make lowercase
gU  make uppercase
...

这些动作大多数都很常见:

0  first character of the line
$  end of line
aw a word
iw inner word
...

所以你只需要记住一些运算符和动作(有很多但你会有一些喜欢的)。

这样你就可以得到上面@ungalnanban的列表。


来源:Vim cheatsheet - devhints.io


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接