首页 > 解决方案 > 仅在特定位置在 VIM 中搜索和替换

问题描述

我有一个.json文件,我想搜索并替换}},. 但是,我只想在我有 text 的情况下应用它"item_secret": "98ax3fsrv"}。字符串98ax3fsrv的长度和内容都不同。所以我实际上正在寻找类似的东西"item_secret": "%s"}并将其替换为"item_secret": "%s"},.

有没有办法在哪个字符串组合之后应用这个搜索和替换?

标签: vim

解决方案


想到了两种不同的方法:

1.

:%s/"item_secret": ".*"}/&,

只是一个简单的搜索和替换。在此,&表示"item_secret": ".*"匹配的整个字符串。如果后面的行可能有更多引号"98ax3fsrv",您可能需要

:%s/"item_secret": "[^"]*"}/&,

或者

:%s/"item_secret": ".\{-}"}/&,

2.

:g/item_secret/norm A,

我更喜欢这种方式。它说“在每一行匹配item_secret,运行命令normal A,”,它在行尾进入插入模式并附加一个逗号。这只有在到处都出现}行尾时才有效。item_secret


推荐阅读