1

I have the following problem

This is text:

printf("sysname %s",ut.sysname);

I want to use vim to replace sysname line by line. I type the command in my gvim:

:s/sysname/version

I want to get the output like this:

printf("version %s",ut.version);

But I get the output like this:

printf("version %s",ut.sysname);

What am I doing wrong?

4

2 回答 2

6

您缺少g适用于当前行上所有匹配项的命令,而不仅仅是第一个:

:s/sysname/version/g

作为奖励:

:%s/sysname/version/g

将替换当前文件中的所有出现,而不仅仅是当前行。

于 2013-06-13T15:55:20.987 回答
0

在一条线上完成

:s/sysname/version/g

您也可以qq在输入之前使用宏记录器,然后按q之后,然后使用@q在要替换它的任何其他行上重播。或按: up选择旧命令。

或者在每一行上都这样做:

:%s/sysname/version/g

但是,在更换每一行时,您应该小心。如果有很多文本,请尝试使您的替换更具体。

我会做

:%s/\(printf("\)sysname\(.*\)sysname/\1version\2version

于 2013-06-13T15:57:22.093 回答