2010-02-20 50 views
0

使用匹配的文本中的替換文本我在這樣的每一行的前具有碼的塊與時間戳:如何在Vim中

12/02/2010 12:20:12 function myFun() 
12/02/2010 12:20:13 {.... 

的第一列是一個日期時間值。我想用Vim的,從而它們註釋掉:

/*12/02/2010 12:20:12*/ function myFun() 
/*12/02/2010 12:20:13*/ {.... 

我試圖尋找日期第一:

/\d\d\/\d\d\/\d\d\d\d \d\d:\d\d:\d\d 

我把所有的時間標記正確標記。但是當我試圖通過命令來替換它們:

%s/\d\d\/\d\d\/\d\d\d\d \d\d:\d\d:\d\d/\/*\d\d\/\d\d\/\d\d\d\d \d\d:\d\d:\d\d*\// 

我得到了以下結果:

/*dd/dd/dddd dd:dd:dd*/ function myFun() 
/*dd/dd/dddd dd:dd:dd*/ {.... 

我想我需要命名的搜索部分,並把它們放回替換部分。我如何做到這一點?

回答

2
%s/\d\d\/\d\d\/\d\d\d\d \d\d:\d\d:\d\d/\/*&*\// 
+0

不錯。它工作正常。只是好奇,什麼是&這裏?它是匹配的搜索部分嗎?任何有關此信息的網頁? – 2010-02-20 03:26:19

+0

':h sub-replace-special' – 2010-02-20 03:27:24

6

我想,我只想做這樣的事情:

:%s-^../../.... ..:..:..-/* & */- 
+0

+1,所有這些反斜槓都讓我頭疼。 – 2010-02-20 03:49:15

0
:%s/^\([0-9/]* [0-9:]* \)\(.*\)/\/*\1*\/ \2/ 
4

我真的不是我們一個正則表達式來做到這一點。輸入正確格式需要很長時間。我會使用一個可視塊。這個序列就是這樣的。

<C-V>}I/* <ESC> 
3f\s 
<C-V>I */ 

我愛正則表達式,並不願意敲正則表達式的解決方案,但發現做預格式塊東西的時候,這是比較容易的,需要從真正的任務,少了分流這沒有弄清楚如何編寫正則表達式。