我想提取一些跨越多行并且可以与单个 Vim 正则表达式匹配的文本的多次出现(使用元字符 \_
)。
不幸的是,虽然匹配的行在 Vim 中正确突出显示,
当我在匹配的正则表达式后添加任何 Vim 命令(如删除或 yank)时,
该命令仅适用于每个匹配项的第一行。
示例:
1: bad_function(arg1,
2: arg2, arg3,
3: ...
4: argN);
5: good_function();
6: ...
7: bad_function(arg2_1,
8: ...
9: arg2_N);
10: another_good_function();
如果我执行
:g/bad_function([^;]\+\_[^;]\+;$/d
,那么只有行1 和 7 被删除,尽管突出显示的是第 1-4 和 7-9 行。
如何猛拉/删除所有匹配(突出显示)的行?
最佳答案
尝试这个:
:let @a=''
:g/first\_.*second.*$/normal! v/second^M$"Ay
输入
^M
用 CTRL-V 然后回车。
关于regex - Vim:当使用\_ 跨多行匹配字符串时。在正则表达式中,:yank 命令仅适用于第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290435/