5

我想将一大组标识符从小写更改为大写。我有一个文件,其中包含多个(数百个)以q_. 我构建了一个定义此匹配的正则表达式:(q_\w*)现在我想应用~命令使它们全部大写(它们当前是小写)。我觉得 VIM 完全有能力做到这一点,但我的技能还没有,你能帮忙吗?

4

2 回答 2

6

如果要对整个标识符进行大写,对于文件中的每个标识符,请使用以下替换命令:

%s/q_\w\+/\U&/g

这里的技巧在于&替换模式,它引用了整个匹配。这将替换q_identifier1Q_IDENTIFIER1.

如果您只想大写q,那么您可以使用:

%s/q_\(\w\+\)/Q_\1/g

现在q_identifier1将改为:Q_identifier1

如果您想大写除 之外的所有内容q_,请使用:

%s/q_\(\w\+\)/q_\U\1/g

现在q_identifier1将改为:q_IDENTIFIER1

于 2012-10-03T19:10:11.373 回答
0

您也可以为此使用宏:

  • 搜索您的模式:/q_\w*
  • 开始录制宏:qq
  • 大写并找到下一个:llve~n
  • 停止录制宏:q
  • 必要时重复:666@q

但仅此而已,否则它将换行并变回小写(或者您可以关闭wrapscanignorecase暂时关闭)。

于 2012-10-03T21:36:40.703 回答