在vim中没有一些特殊函数调用的搜索函数

时间:2014-11-04 07:08:59

标签: regex vim

我有一个非常大的源代码(> 10,000行)要更改,有一些函数与fn_i_dont_want,我不需要更改,所有其他功能我必须做一些更改。所以它是#s很难在如此大的源代码中找到这样的函数。 例如:

int foo_i_dont_want()
{
  fn_i_dont_want()
}

 int foo_i_want1()
{
  fn()
  fn1()
}

int foo_i_want2()
{
    fn()
    fn1()
    ....
}

我希望vim搜索我想要的所有功能,foo_i_want1foo_i_want2,条件是我不希望函数调用fn_i_dont_want

我试过像

一样使用vim正则表达式
  /{\_.\{-}fn_i_dont_want\_.\{-}}

  /{\_.*fn_i_dont_want\_.*}

但是一切都失败了,当有这样的功能时会变得更糟:

int foo_i_dont_want()
{
    struct bar = {0,0};
     fn_i_dont_want();
}

和vim搜索一对括号{}。

中的所有内容

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

使用正则表达式解析复杂的编程语言必然是不完整和有问题的。代替:

  • 要么使用真实IDE的重构功能,要么
  • 如果你必须在Vim中使用带有:substitute onfirm标志的c,并在检查后手动接受/拒绝每个匹配位置