VIM不替换点标点符号后的单词。如何改变它?

VIM不替换点标点符号后的单词。如何改变它?,vim,Vim,我有以下问题 全文如下: printf("sysname %s",ut.sysname); 我想使用vim逐行替换sysname。我在gvim中键入命令: :s/sysname/version 我希望得到如下输出: printf("version %s",ut.version); printf("version %s",ut.sysname); 但我得到的输出如下: printf("version %s",ut.version); printf("version %s",ut.sysn

我有以下问题

全文如下:

printf("sysname %s",ut.sysname);
我想使用vim逐行替换sysname。我在gvim中键入命令:

:s/sysname/version
我希望得到如下输出:

printf("version %s",ut.version);
printf("version %s",ut.sysname);
但我得到的输出如下:

printf("version %s",ut.version);
printf("version %s",ut.sysname);
我做错了什么?

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

:s/sysname/version/g
作为奖励:

:%s/sysname/version/g
将替换当前文件中的所有匹配项,而不仅仅是当前行上的匹配项。

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

:s/sysname/version/g
作为奖励:

:%s/sysname/version/g
将替换当前文件中的所有事件,而不仅仅是当前行上的事件。

在一行上执行此操作

:s/sysname/version/g

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

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

:%s/sysname/version/g

然而,更换每一条线时,你应该小心。如果有很多文本,试着让替换内容更具体

我愿意

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

在一行中执行此操作

:s/sysname/version/g

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

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

:%s/sysname/version/g

然而,更换每一条线时,你应该小心。如果有很多文本,试着让替换内容更具体

我愿意

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