如何在vim的每一行上将前两个大写字符更改为小写字符

时间:2011-10-05 06:35:13

标签: text full-text-search text-editor vim

我有以下文字

HELLO TO STACKOVERFLOW
WELCOME TO STACKOVERFLOW

我希望文字像这样

heLLO TO STACKOVERFLOW
weLCOME TO STACKOVERFLOW

5 个答案:

答案 0 :(得分:15)

使用 CTRL - V

突出显示前两个列的可视化块

enter image description here

输入guu将所选文字,gUU缩小为大写。

enter image description here

答案 1 :(得分:9)

虽然@Jin为交互式使用提供了一个很好的答案,但这是在脚本编写中的一种方法:

运行到缓冲区的每一行:

:%normal 0gu2l

或者您可以指定应用命令的行范围。这适用于第4和第5行:

:4,5normal 0gu2l

答案 2 :(得分:5)

在正常模式下:

  • 如果设置了startofline:verb set sol?会告诉您),您可以使用:lgu CTRL-V G
    细节:
    • l转到下一个字符
    • gumake lowercase运算符,期待动作
    • CTRL-V指定动议是块状
    • G转到最后一行的第一列。
  • 如果未设置startofline,则gu CTRL-V Gl.l转到下一个字符,{{1}重复相同的命令)。

要使用.更改为大写更改gu,对于切换案例,请确保设置gU并改为使用tildeop

答案 3 :(得分:2)

除@Benoit,@ Jin和@progo给出的答案外:

:%s/^../\L&\E/

请参阅:help sub-replace-special

答案 4 :(得分:1)

您可以使用替换

:%s/.*\%3c/\L&

利用与特定匹配的\%c搜索模式原子 柱。使用该原子,您可以轻松调整模式以匹配任何内容 一行中的第一个字符数。