替换Vim中2个字符之间的文本

时间:2013-08-06 12:26:57

标签: shell vim sed

我正在处理遗留代码,我的声明如下:

int array[MAX_SIZE_FOR_THIS_ARRAY];

在VIM中,我想替换[& ](包括[&])与 ARRAY 如下:

int array_ARRAY_;

请注意: 1.阵列大小宏对于不同的阵列会有所不同,因此我们不能在搜索模式中使用MAX_SIZE_FOR_THIS_ARRAY。 2.变量“array”的名称也不固定。

我只需要搜索[]用数千行代码替换[...]到 ARRAY

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:7)

当光标位于方括号内的任何位置时,您可以使用:

C [ _ARRAY_

帮助您记住:

  • c 更改
  • a around
  • [方括号
  • _ARRAY__ARRAY_

答案 1 :(得分:6)

如果您使用vim进行此操作,

ca[就是答案。

因为您使用sed标记了问题,所以这是sed的方式:

kent$  echo "int array[MAX_SIZE_FOR_THIS_ARRAY];"|sed 's/\[[^]]*\]/_ARRAY_/'
int array_ARRAY_;

以你的例子,

sed 's/\[.*]/_ARRAY_/'

这也有效。

答案 2 :(得分:4)

您可以进行替换:

:%s/array\[MAX_SIZE_FOR_THIS_ARRAY\]/array_ARRAY_/g