Text 如何在Vim中将每行的前两个大写字符更改为小写?
我有以下案文:Text 如何在Vim中将每行的前两个大写字符更改为小写?,text,full-text-search,text-editor,vim,Text,Full Text Search,Text Editor,Vim,我有以下案文: HELLO TO STACKOVERFLOW WELCOME TO STACKOVERFLOW 我希望文本更改如下: heLLO TO STACKOVERFLOW weLCOME TO STACKOVERFLOW 如何在Vim中执行此操作?使用CTRL-V突出显示前两列的可视块 输入gu或u将所选文本降格,输入gu或u将所选文本升格 虽然@Jin为交互式使用提供了一个很好的答案,但这里有一种在脚本中实现的方法: 要运行到缓冲区的每一行: :%normal 0gu2l 也可
HELLO TO STACKOVERFLOW
WELCOME TO STACKOVERFLOW
我希望文本更改如下:
heLLO TO STACKOVERFLOW
weLCOME TO STACKOVERFLOW
如何在Vim中执行此操作?使用CTRL-V突出显示前两列的可视块 输入
gu
或u
将所选文本降格,输入gu
或u
将所选文本升格
虽然@Jin为交互式使用提供了一个很好的答案,但这里有一种在脚本中实现的方法: 要运行到缓冲区的每一行:
:%normal 0gu2l
也可以指定应用命令的行范围。这将适用于第4行和第5行:
:4,5normal 0gu2l
在正常模式下:
- 如果设置了
(startofline
将告诉您),您可以使用::动词set sol?
CTRL-Vlgu
G
详情:
转到下一个字符l
是gu
操作符,需要一个动作make lowercase
指定运动是分块的CTRL-V
转到最后一行的第一列G
- 如果未设置
,则startofline
CTRL-Vgu
(Gl.
转到下一个字符,l
重复相同的命令)
对于使用
gu
更改为大写的gu
,对于切换大小写,请确保设置了tildeop
,并使用~
。除了@Benoit、@Jin和@progo给出的答案外:
:%s/^../\L&\E/
请参见
:help sub replace special
您可以使用替换
:%s/.*\%3c/\L&
它利用了与原子匹配的\%c
搜索模式
行中特定列上的字符。利用原子,你可以
轻松调整模式以匹配任意数量的第一个字符
在一行中。+1,您还可以指定要使用的列<代码>:%normal 15 | gu3l将对所有行的第15列至第17列进行降级。或
~
以反转大小写。发送截图时要小心,你的窗口是半透明的,如果你有敏感的数据在后面,要特别小心(这里不用担心)@Benoit是的,我会的,但我没有什么要隐藏的:)谢谢你的编辑和~
提示。对'startofline'
和'tildeop'的使用有很好的解释