我确信这个问题已经得到解答,但查询对于谷歌来说有点太复杂了。
简而言之,我正在尝试从某些代码中删除许多已弃用的方法。因此,我正在浏览文件,当我看到要删除的方法时,我会删除每一行,直到看到以制表符开头然后是字符串“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”命令更好的方法。
Vim 搜索实际上是文本对象!这意味着您可以简单地:
d/\s*def
然后,只需根据需要使用
.
重复该命令即可。
使用带有范围的
:delete
ex 命令
:,/Keep/-1d
说明
:.,/Keep/-1delete
.,/Keep/-1
是 delete
命令起作用的范围.
表示当前行。.
/Keep/
搜索与“Keep”匹配的行/Keep/-1
是搜索匹配的行然后减去一行:delete
可以短接到:d
更多帮助请参阅
:h :range
:h :d
如果需要正则表达式,只需输入:
:%s/\_.*\(def Method_to_Keep\)/\1/g