如何更改此代码:
dayHour: {
sunday: {
openHour: null,
closeHour: null,
},
monday: {
openHour: null,
closeHour: null,
},
tuesday: {
openHour: null,
closeHour: null,
},
wednesday: {
openHour: null,
closeHour: null,
},
thursday: {
openHour: null,
closeHour: null,
},
...
}
到此代码:
dayHour: {
sunday: {
openHour: null,
closeHour: null,
openMenu: null,
closeMenu: null
},
monday: {
openHour: null,
closeHour: null,
openMenu: null,
closeMenu: null
},
tuesday: {
openHour: null,
closeHour: null,
openMenu: null,
closeMenu: null
},
wednesday: {
openHour: null,
closeHour: null,
openMenu: null,
closeMenu: null
},
thursday: {
openHour: null,
closeHour: null,
openMenu: null,
closeMenu: null
},
...
}
这是我尝试过的,我阻止了文本:
openHour: null,
closeHour: null
我不知道下一步该怎么做才能找到并替换我阻止的文本。 我在谷歌上搜索了几个问题,但我什么也没找到,甚至不知道要搜索什么关键字。谢谢
这是一种非常常见的技术:使用:global
来匹配您想要的行。然后可以输入编辑命令,例如,使用:normal
g/closeHour/normal! oopenMenu: null,^McloseMenu: null
此处必须输入^M
^V<Enter>
如果您的替换文本已经拉入寄存器,您也可以将其放入:
g/closeHour/normal! ]p
(注意:可以将normal! ]p
更改为put
,但可能需要额外的缩进修复,例如='[
(。
您可以使用此替换命令:
:%s/(openHour: null,ns*closeHour: null,?)/1r openMenu: null,r closeMenu: null/
您甚至可以复制缩进:
:%s/(s*)(openHour: null,ns*closeHour: null,?)/12r1openMenu: null,r1closeMenu: null/
有关详细信息,请参阅:help :s
。 如果您愿意,我也可以解释该命令。
我尝试使用子匹配:
/openHour_.{-}clos.*
:%s//=submatch(0) . "r " . substitute(submatch(0), 'Hour', 'Menu', 'g')/g
第一次使用多行搜索(非贪婪正则表达式(_.{-}
.我们可以简单地引用我们的搜索//
.之后,我们使用submatch(0)
加上带有一些"r "
空格的换行符重新插入搜索,然后使用替换搜索的修改版本。
点.
用于连接我们的字符串。
@matt答案可以更改为:
:g/closeHour/exec "normal!oopenMenu: null, <Enter>closeMenu: null"
使用双引号,我们可以使用像<Enter>
这样的按键,而不是许多用户不理解的经典^M
,因此它更清晰。我认为第二个@matt解决方案是正确的,它更容易打字并且直截了当。
如果它已经在剪贴板上,我们可以通过以下方式指示,而不是将所需的文本复制到任何寄存器:"+]p
,因此它将是:
:g/closeHour/normal! "+]p