如何在Vim中将所有文本转换为小写
如何将Vim中的所有文本转换为小写?有可能吗如何在Vim中将所有文本转换为小写,vim,text-processing,Vim,Text Processing,如何将Vim中的所有文本转换为小写?有可能吗 如果你真的是说,那么不,那是不可能的——就像不可能将文本转换为任何形式的粗体或斜体(与之相反)。如果要将文本转换为小写,请创建一个可视块,然后按u(或u转换为大写)。命令模式下的波浪(~)反转光标下字符的大小写 如果希望查看Vim中的所有文本,请查看guifont选项,或者键入:set guifont=*,如果Vim Flavor支持GUI字体选择器 我想你想要小写的文本。解决方案非常简单: ggVGu 说明: gg-转到文本的第一行 V-在直线模
u
(或u
转换为大写)。命令模式下的波浪(~
)反转光标下字符的大小写guifont
选项,或者键入:set guifont=*
,如果Vim Flavor支持GUI字体选择器我想你想要小写的文本。解决方案非常简单:
ggVGu
说明:
如果您在Unix环境下运行
:0,$!tr "[A-Z]" "[a-z]"
给猫剥皮有很多方法。。。以下是我的想法: 同样,对于大写字母:
:%s/[a-z]/\U&/g
我更喜欢这种方式,因为我一直在使用这种构造(
:%s/[pattern]/replace/g
),所以它更自然。类似于mangledorf的解决方案,但更短,更通俗
:%s/*/\L&/g
- 用
将“HellO”切换为“HellO”,然后移动g~
- 大写字母“HellO”到“HellO”,加上
然后加上一个动作gU
- 用
将“HellO”小写为“HellO”,然后加上一个动作gu
我遇到了类似的问题,我想使用
“:%s/old/new/g”
,但最终使用了两个命令:
:0
gu:$
使用此命令模式选项
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.
通常Vu(或Vu表示大写)足以将整行转换为小写,因为V已经选择了整行来对其应用操作
Tilda(~)更改单个字母的大小写,产生驼峰大小写或类似的大小写
Vim有许多不同的模式来处理各种场合,并且这些模式组织得很整齐,这真是太棒了
例如,v-真实视觉模式、相关的v-视觉线条和Ctrl+Q-视觉块模式(允许您选择块的功能,其他一些高级编辑器通常通过按住Alt键并选择文本来提供这一功能)。使用
ggguG
gg
:转到第一行
gu
:更改为小写
G
:转到最后一行。我认为值得一提的是,您不必创建可视块来将文本块小写guu
将把一行小写,而gu[运动]
将把该运动的文本值小写。同样地,gUU
和gU[motion]
的工作方式相同,仅适用于大写。实际上,大多数字母也可以使用小写字母,使用ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz.不过,这只是一种攻击。这些字体不能用作普通的小大写字母,字体也不能很好地支持它们。(在我的台式机上,F渲染得很奇怪,在我的手机上,它根本不渲染,举个例子。)总之,Unicode的有趣部分,谢谢!这个答案是不正确的。user80168有正确的答案。如果您想在不进行视觉选择的情况下执行此操作,请选择ggguG:help gu使用大写字母U
(例如,ggVGU
)方括号是多余的,一旦删除它们,也不需要引号<代码>:%!tr A-Z A-ZThe
表示一个外部shell命令,因此$man tr
(与:help tr
相反)显示tr
用于翻译。另一种方法是::%0,$!tr[:upper:[:lower:][/code>我们有很多html页面,所有字符都是大写的。这节省了我用小写重新键入所有内容的时间。在编辑问题之前,问题是如何将vim中的所有文本转换为小写。显然,有一个将文本转换为小写的用例。VIM网站的答案是:谢谢。我认为上一个示例中有一个输入错误(“大写也是如此”)-正则表达式应该改为[a-z],而不是“[a-z]”。:%s/\U&/g
也可以。结果它忽略了数字和非字母字符。吸引我的是&
。为什么\U(或\L)本身还不够?我们能解释一下吗?&
是匹配字符串的替代。因此,\U&
将匹配的字符串大写,以便用于替换。:%s/*/\L&
就足够了(不需要使用g
标志,因为*
选择整行),就像:%s/\L&/g
一样,因为/g/表示该行的全局操作。然而,让我着迷的是&
。为什么这是必要的?&
在这里代表模式匹配的,因此可以理解为:用\Lowercase(模式匹配的内容)
替换*
。请注意,全局匹配
比匹配*
要慢,我想没有,但是@mangledorf的答案中有一个不太直观的替换命令,用转义序列“\L&”替换所需的字符(小写),用“\U&”替换大写。吸引我的是&
\L和\U是完全有道理的,但是为什么有必要使用&
呢?这与Kalanidhi的答案有什么不同?投票结果是将其设为0,这对于一个复制了上一个答案的答案来说是足够的分数@对于错误/有害的解决方案,应保留MSeifert负分
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.