删除一些正则表达式匹配的所有行

时间:2013-10-09 22:37:28

标签: regex vim

我想删除从文档开头到一些正则表达式匹配的所有内容,例如_tmm。我写了以下自定义命令:

command! FilterTmm exe 'g/^_tmm\\>/,/^$/mo$' | norm /_tmm<CR> | :0,-1 d

这并不像预期的那样有效。但是当我使用命令行直接执行这些命令时,它们可以工作。

您是否有任何其他建议可以使用自定义命令完成此作业?

1 个答案:

答案 0 :(得分:1)

您似乎想要从匹配行上方的行开始删除。

/pattern可以有偏移选项。比如/pattern/{offset}:h /的详细信息,根据您的需要,您可以做到(无论您的光标位于何处):

ggd/_tmm/-1<cr>

修改

我两次阅读你的问题,似乎你想在一个命令行中完成它。

您的脚本有问题,normal不支持|,也就是说,它必须是最后一个命令。

尝试这一行,如果它适合你:

exe 'norm gg'|/_tmm/-1|0,.d