在vim中以**开头的行Capitilize

时间:2018-06-27 20:55:28

标签: regex vim

我正在尝试以int开头的每一行。或INT。

以下命令

    %s/\<int.*\>/\U&/gi

大写国际线,整数线。 (我知道我可以添加c并搜索它,然后确认它,但是我更喜欢将其添加到我的.vimrc文件中,并在保存文件时获得结果。)

所以我怎么只能将以int开头的行大写。 (请在句号之间再换一个字。)我尝试过

%s/\<int.\s*\>/\U&/g

但是没有用。

谢谢。

3 个答案:

答案 0 :(得分:4)

您需要使用

%s/^int\..*/\U&/i

在这里

  • ^-字符串的开头
  • int\.-一个int.子字符串
  • .*-行末的所有文本。

\U&替换将所有匹配的文本变为大写。

i标志使匹配的大小写不敏感。请注意,此处不需要g,因为该命令会影响所有行,每行只有1个匹配项。

答案 1 :(得分:3)

我会使用:g命令:

:g/^int\./norm! gUU

一些注释

  • 以上行适用于选项ic集。我觉得设置icscs很方便。

  • 无论您是否设置了ic,以下行均有效:

    :g/\c^int\./norm! gUU
    

答案 2 :(得分:1)

简而言之:使用:g似乎更容易。

类似的东西:

:g/\v^(int|INT)\./norm! gUU
  • \v为regexp激活了一种非常神奇的模式,不是强制性的,但我发现这种方式更容易
  • :g提取与模式匹配的所有行,并为每行启动norm! gUU(感谢@Kent提供提示!)。如您所知,gUU在正常模式下会将整行转换为大写。

此处有关:g的更多信息:http://vim.wikia.com/wiki/Power_of_g 这很容易成为许多用户不知道的Vim的杀手级功能。没有它,我活不下去!