如何在Vim中的替换文本中使用匹配的文本

时间:2010-02-20 03:20:51

标签: regex vim replace

我有一个代码块,每行前面有时间戳,如下所示:

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*/ {....

我想我需要命名搜索部分并将它们放回替换部分。我怎么能这样做?

4 个答案:

答案 0 :(得分:6)

我想我会做类似的事情:

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

答案 1 :(得分:4)

我实际上不是我们的正则表达式。输入正确的格式需要很长时间。我会改用Visual Block。顺序就是这样的。

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

我喜欢正则表达式,并且不想敲击正则表达式解决方案,但是在使用预格式化的块执行操作时,发现这更容易,并且需要从实际任务中减少转移,这不是计算如何写一个正则表达式。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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