2016-10-13 36 views
0

所以,我在C中有一个大的代码文件,其中有像这样的多个解除引用。在VIM中如何替换<word> - > abc到ABC(<word>)所有可能的值为<word>

iter->sector; 
msg->sector; 
dump.msg->sector; 

其中iter和msg的类型相同。现在,由于一些变化,我不得不写一个宏来替换这些行。宏样子,

DUMMY_MACRO(iter) 
DUMMY_MACRO(msg) 
DUMMY_MACRO(dump.msg) 

我要的是能够使用vim搜索做替换前面的代码到新的宏代码/替换。

+3

到目前为止您有试过任何东西吗?通过展示您的尝试并描述您遇到困难的部分,我们可以更好地了解您的熟练程度并提供更准确的答案。就目前而言,它看起来像你已经发布了一个要求,并希望有人为你写代码。这是一个简单的搜索和替换; ':help:s'和':help \ 1'应该是你所需要的。 –

+0

我不知道\ 1,曾试图做一个搜索,并替换为每个不同的行有 - >部门,这是不理想的整个字符串。由于这显然不对,我没有在这里发布。感谢指针。 – saketrp

回答

2

如果您已经知道sed,那么:substitute将是最理想的工具。

" untested 
:%s/\v(\S+)-\>sector/DUMMY_MACRO(\1)/g 

:h :s 
:h /\v " -> to simplify expressions 
:h /\( " -> define a group 
:h /\S " -> any thing that is not a space 
:h /\+ " -> 1 or more 
:h /\1 " -> ref to 1st group 
相关问题