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

San*_*ngh 1 vim shell sed

我正在编写遗留代码,我的声明如下:

int array[MAX_SIZE_FOR_THIS_ARRAY];
Run Code Online (Sandbox Code Playgroud)

在VIM中,我想用[&](包括[&])替换ARRAY之间的文本,如下所示:

int array_ARRAY_;
Run Code Online (Sandbox Code Playgroud)

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

我需要搜索[] ,并在数千行代码中用ARRAY替换[...] .

有人可以帮我这个吗?

rid*_*rid 7

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

ca[_ARRAY_

为了帮助你记住:

  • c 更改
  • a 周围
  • [ 方括号
  • _ARRAY__ARRAY_

  • :h text-objects @mohit (3认同)

Ken*_*ent 6

ca[ 如果你用vim做的话会是答案.

既然你也用这个标记了问题sed,这里有sed的方法:

kent$  echo "int array[MAX_SIZE_FOR_THIS_ARRAY];"|sed 's/\[[^]]*\]/_ARRAY_/'
int array_ARRAY_;
Run Code Online (Sandbox Code Playgroud)

用你的例子,

sed 's/\[.*]/_ARRAY_/'
Run Code Online (Sandbox Code Playgroud)

这也有效.