我确信这已经得到了解答,但对于Google来说查询有点过于复杂。
简而言之,我试图从某些代码中删除许多已弃用的方法。所以我正在浏览文件,当我看到一个我要删除的方法时,我将删除每一行,直到我看到一行以制表符开头,然后是字符串“def”。
我在想VIM应该让我创建一个简单的宏来做到这一点,但诀窍就是逃避我。
以下是我要删除的内容。
def Method_to_Delete(self):
"""
@return Control ID :
@author
"""
results = {}
results['xx'] = "thingy"
results['yy'] = 'thingy2'
return results
def Method_to_Keep(self):
"""
This is a method that does something wonderful!!!
@return Control ID :
@author
"""
results = {}
results['xxx'] = "WhooHoo!"
results['yyy'] = 'yippee!!'
return results
我希望将光标放在“def Method_to_Delete”的行上并做一些将删除但不包括“def Method_to_Keep”的内容
必须有比多个“dd”命令更好的方法。
答案 0 :(得分:14)
Vim搜索实际上是文本对象!这意味着你可以简单地说:
d/\s*def
然后,只需根据需要使用.
重复该命令。
答案 1 :(得分:11)
使用范围
的:delete
ex-command
:,/Keep/-1d
解释
:.,/Keep/-1delete
.,/Keep/-1
是delete
命令将采取行动的范围.
表示当前行。.
可以被假设和删除/Keep/
搜索与“Keep”相匹配的行/Keep/-1
搜索匹配的行,然后减去一行:delete
可以缩短为:d
如需更多帮助,请参阅
:h :range
:h :d