仅在特定位置在VIM中搜索和替换

时间:2019-06-27 14:34:30

标签: vim

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

有什么方法可以应用此搜索并替换哪些字符串组合?

1 个答案:

答案 0 :(得分:4)

想到两种不同的方式:

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时,这才起作用。