Vim 使用VI search and replace如何替换最后两组单引号中的文本?
我有很多这样的台词:Vim 使用VI search and replace如何替换最后两组单引号中的文本?,vim,replace,vi,Vim,Replace,Vi,我有很多这样的台词: { id: 22, name: 'Alice', score: 123, city: 'Atlanta', birthday: '1981/12/03'}, 我想使用VI-gvim来精确搜索、替换和清空最后两组单引号。您可以使用:normal cmd,有时它比:s更容易。例如: :norm! $F'di'3;. 将您的线路更改为: { id: 22, name: 'Alice', score: 123, city: '', birthday: ''}, 如果您想在所有
{ id: 22, name: 'Alice', score: 123, city: 'Atlanta', birthday: '1981/12/03'},
我想使用VI-gvim来精确搜索、替换和清空最后两组单引号。您可以使用:normal cmd,有时它比:s更容易。例如:
:norm! $F'di'3;.
将您的线路更改为:
{ id: 22, name: 'Alice', score: 123, city: '', birthday: ''},
如果您想在所有线路上都这样做,您只需:%norm。。。。。您也可以将norm cmd与:g组合使用,例如,您希望对名称为:
编写一个宏来实现这一点。要开始录制宏,请点击q,然后点击要保存宏的寄存器,例如在寄存器下。在命令模式下执行
$F'di';;di'j
$-转到行的末尾
F'-向后搜索'
di'-删除单引号之间的内容
;; - 转到前面的单引号
再次删除
j-转到下面的行
通过再次点击q来完成宏。然后,要在单行上应用宏,请点击@a。要在所有行上应用宏,请键入:%norm@a如果要使用搜索和替换,可以执行以下操作:
:%s/city: '.\{-}'/city: ''
生日场也一样
:%s/birthday: '.\{-}'/birthday: ''
\{-}与*相同,但使用反最短匹配优先算法。见:帮助非贪婪者
如果您确实喜欢在单个命令中执行此操作:
%s/\(city:\|birthday:\) '.\{-}'/\1 ''/g
city:和Birth:作为子表达式与\和\匹配,则可以使用\1表示替换字符串中的第一个子表达式,需要使用end g选项在一行中进行多个替换。接受您的答案,因为您使用搜索和替换回答了我的直接问题
%s/\(city:\|birthday:\) '.\{-}'/\1 ''/g