regex - Vim:当使用\_ 跨多行匹配字符串时。在正则表达式中,:yank 命令仅适用于第一行

标签 regex vim

我想提取一些跨越多行并且可以与单个 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/

相关文章:

macos - 设置 vim 的背景高亮颜色

python - 用 python 和 re 清理文本

java - 如何检查特定模式是否在某些字符之前?

regex - 使用 awk 匹配一个单词,然后找到另一个单词第一次出现的位置

regex - 匹配开头和结尾的单词

regex - 在 vim 中自动检测 python 3 文件

r - 如何提取n位数字之前的1或2个单词?

Vim ctags : can we toggle focus between taglist window and source code window without closing the taglist window?

bash - 在所有打开的文件上使用 VIM 命令

Vim:如何通过单个命令在当前目录中的所有文件上运行 `:TOhtml`?