如何将 Vim 中的所有文本转换为小写?甚至可能吗?
10 回答
我假设您想要小写文本。解决方案非常简单:
ggVGu
解释:
- gg- 转到文本的第一行
- V- 在行模式下打开视觉选择
- G- 转到文件末尾(此时您已选择整个文本)
- u- 小写选定区域
如果您真的是指small caps,那么不,这是不可能的——就像在任何文本编辑器(与文字处理器相反)中无法将文本转换为粗体或斜体一样。如果要将文本转换为小写,请创建一个可视块并按
u
(或U
转换为大写)。命令模式下的波浪号 (~
) 反转光标下字符的大小写。如果您想在 Vim 中以小写字母查看所有文本,您可能需要查看该
guifont
选项,或者输入:set guifont=*
您的 Vim 风格是否支持 GUI 字体选择器。
使用此命令模式选项
ggguG
gg - Goto the first line
g - start to converting from current line
u - Convert into lower case for all characters
G - To end of the file.
类似于 mangledorf 的解决方案,但更短且外行友好
:%s/.*/\L&/g
给猫剥皮的很多方法……这是我刚刚发布的方法:
:%s/[A-Z]/\L&/g
同样对于大写:
:%s/[a-z]/\U&/g
我更喜欢这种方式,因为我一直在使用这个构造 ( :%s/[pattern]/replace/g
),所以它更自然。
- 将案例“HellO”切换到“hELLo”,
g~
然后移动。 - 大写“HellO”到“HELLO”,
gU
然后是一个动作。 - 小写“HellO”到“hello”,
gu
然后是一个动作。
有关示例和更多信息,请阅读:http: //vim.wikia.com/wiki/Switching_case_of_characters
利用 ggguG
gg
: 转到第一行。
gu
: 改为小写。
G
: 转到最后一行。
通常Vu(或VU大写)足以将整行转换为小写,因为V已经选择整行来应用操作。
Tilda ( ~) 更改单个字母的大小写,导致驼峰式或类似的大小写。
Vim 有许多不同的模式来处理各种场合,以及这些模式如何整齐地组织,这真是太棒了。
例如,v- 真正的视觉模式,以及相关的V- 视觉线,和Ctrl+ Q- 视觉块模式(允许您选择块,其他一些高级编辑器通常通过按住Alt键并选择文本来提供的一个很棒的功能)。
如果您在 Unix 风格下运行
:0,$!tr "[A-Z]" "[a-z]"
我有一个类似的问题,我想使用":%s/old/new/g"
,但最终使用了两个命令:
:0
gu:$