2016-10-13 62 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 
相關問題