在VIM中如何将<word> - &gt; abc替换为ABC(<word>)以获取<word>的所有可能值

时间:2016-10-13 10:27:13

标签: regex search vim replace

所以,我在C中有一个很大的代码文件,其中有多个这样的解引用。

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

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

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

我想要的是能够使用vim search / replace将早期代码替换为新的宏代码。

1 个答案:

答案 0 :(得分: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