2017-04-09 23 views
0

我需要重複遍佈代碼庫的幾行代碼重複某個操作。例如,需要與如何跨代碼行重複某個操作?

EQUATE(x,y); 

不過每個實例需要手動評估,因爲說這需要時xy已被定義爲unit16_t將只是做更換

x = y; 

。所以我尋求的功能是能夠瀏覽各種感興趣的文件,並且當我遇到需要運行上述操作的線路時,我應該能夠按下一定的序列鍵來替代給定的具有所需更改的代碼行。如果我遇到一個行其他地方,看起來像下面

struct_x.var_x = struct_y.var_y; 

我應該只可以用一組簡單的按鍵與

EQUATE(struct_x.var_x, struct_y.var_y); 

來取代它這麼說。

+1

爲什麼不使用宏? – melpomene

+0

這很好,只是想出瞭如何使用宏 - 我是vim的新手。它完成了工作。 – JDD

回答

1

這是我用宏來做到這一點:

  1. 開始錄製宏與qaq開始錄製,然後保存在寄存器a
  2. 移動到行的開頭:^
  3. 進入插入模式(i),然後鍵入EQUATE(
  4. 然後在命令模式下搜索並替換操作::.s/\ = \ /,/g - 搜索=並在此行中用,替換它。
  5. $移至行尾,再次進入插入模式並關閉支架。
  6. 停止錄製宏 - q

這就是它!在您想要使用它的每個其他地方重播與@a的宏。

+0

您可以將'^ i'結合到'I'和'$ a'結合到'A'。您不需要指定'.' - 當前行是':s'中的默認範圍。你不需要轉義空格:':s/= /,/ g'可以正常工作。 – melpomene