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

Shell 替换Vim中2个字符之间的文本,shell,vim,sed,Shell,Vim,Sed,我正在编写一个遗留代码,其中有如下语句: int array[MAX_SIZE_FOR_THIS_ARRAY]; 在VIM中,我想用数组替换[&](包括[&])之间的文本,如下所示: int array_ARRAY_; 请注意: 1.数组大小宏对于不同的数组是不同的,因此我们不能在搜索模式中对这个数组使用MAX_Size_。 2.变量“array”的名称也不是固定的 我只需要搜索[]并将[…]替换为到处都是数组的数千行代码 有人能帮我吗?当光标位于方括号内时,您可以使用: ca[\u数组 为

我正在编写一个遗留代码,其中有如下语句:

int array[MAX_SIZE_FOR_THIS_ARRAY];
在VIM中,我想用数组替换[&](包括[&])之间的文本,如下所示:

int array_ARRAY_;
请注意: 1.数组大小宏对于不同的数组是不同的,因此我们不能在搜索模式中对这个数组使用MAX_Size_。 2.变量“array”的名称也不是固定的

我只需要搜索[]并将[…]替换为到处都是数组的数千行代码


有人能帮我吗?

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

ca[
\u数组

为了帮助您记住:

  • 零钱
  • [方括号
  • \u数组
    \u数组

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

ca[
\u数组

为了帮助您记住:

  • 零钱
  • [方括号
  • \u数组
    \u数组

您可以进行替换:

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

您可以进行替换:

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

ca[
将是使用vim进行操作的答案

由于您也将问题标记为
sed
,以下是使用sed的方法:

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

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

这同样有效。

ca[
将是使用vim进行操作的答案

由于您也将问题标记为
sed
,以下是使用sed的方法:

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

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

这同样有效。

+1,不知道vim中有类似于
的变化。如何在帮助中搜索它?(不是通过简单的
:h ca
):h text objects@mohitThanks,但是有没有什么方法可以让我一次完成它--对于文件中的所有位置,无需将光标指向每个位置array@SandeepSingh,当然,请参阅。您可以根据自己的情况调整它。+1,不知道vim中有类似于
的更改。如何在帮助中搜索?(不是通过普通的
:h ca
):h text objects@mohitThanks,但是有没有什么方法可以让我一次完成它--对于文件中的所有位置,无需将光标指向每个位置array@SandeepSingh,当然可以,请参见。您可以根据自己的情况进行调整。您好,谢谢您的回答。但是宏名称:MAX\u SIZE\u for\u THIS\u数组在任何地方都不相同。每个数组可能有不同的名称ent大小和与之相关的不同宏。您能建议一些与确切图案无关的东西吗.@Sandepsing,如果要获取括号之间的所有内容,请使用
*
而不是
MAX\u SIZE\u作为该数组的值,如果要对括号前面是否有
ARRAY
的每个实例执行此操作,请从表达式的左侧和右侧删除
ARRAY
@rid您可能希望使用
\{-}
在这种情况下,
*
的惰性版本。否则,
数组[0][1]
将替换为
数组\u数组
,而不是
数组\u数组[1]
。您好,谢谢您的回答。但是这个数组的宏名称:MAX\u SIZE\u在任何地方都是不同的。每个数组可能有不同的大小和与之相关的不同宏。您能推荐一些与确切模式无关的东西吗.@Sandepsing,如果要获取括号之间的所有内容,请使用
*
而不是
MAX\u SIZE\u作为该数组的值,如果要对括号前面是否有
ARRAY
的每个实例执行此操作,请从表达式的左侧和右侧删除
ARRAY
@rid您可能希望使用
\{-}
在这种情况下,
*
的惰性版本。否则,
数组[0][1]
将替换为
数组\u数组
,而不是
数组\u数组[1]
。谢谢。MAX\u SIZE\u这个数组只是一个示例引用。每个数组的宏名称可能不同。@Sandepsing,第二个示例应该包含从
[
到最后一个
]的所有内容
在每一行。谢谢。此数组的最大大小只是一个示例引用。每个数组的宏名称可能不同。@Sandepsing,第二个示例应该得到每一行从
[
到最后一个
]
的所有内容。