我知道你可以使用 Vim 替换文件中的某些模式:
:%s/<pattern>/<replacement>/g
Run Code Online (Sandbox Code Playgroud)
我想要做的是仅在辅助搜索匹配的情况下执行模式替换,例如:如果我的文件中有以下几行:
00_sub_5_train
01_sub_6_train
02_sub_5_train
03_sub_9_train
04_sub_8_train
05_sub_5_train
06_sub_5_train
Run Code Online (Sandbox Code Playgroud)
我想执行::%s/train/not_train/g仅在找到字符串“sub_5”的行上执行,剩下的就是:
00_sub_5_not_train
01_sub_6_train
02_sub_5_not_train
03_sub_9_train
04_sub_8_train
05_sub_5_not_train
06_sub_5_not_train
Run Code Online (Sandbox Code Playgroud)
这可能吗?
您可以直接应用如下模式。您可以使用sub_5_train完全应用该模式
:%s/sub_5_train/sub_5_not_train/g
Run Code Online (Sandbox Code Playgroud)
根据评论,如果您在 sub_5 后将有不同的内容,您可以进行条件替换,如下所示:
:g/sub_5/ s/train/not_train
Run Code Online (Sandbox Code Playgroud)
在这里,如果我们找到 sub_5,我们将仅替换该行。
基本上,我正在尝试使用如下所示的 g 命令。在这里,对于cmd,我使用替换命令。更多关于 vim g 命令
:[range]g/pattern/cmd
Run Code Online (Sandbox Code Playgroud)