gpt4 book ai didi

regex - 如何在 Vim 中用正则表达式匹配行尾而不是段落?

转载 作者:行者123 更新时间:2023-12-02 01:16:02 31 4
gpt4 key购买 nike

我正在尝试连接一个段落中的所有行,但不是将一个段落与下一个段落连接。

在我的文本文件中,段落不是由它们之间的空行定义的,而是在行尾有一个句点。句点后可能有空格,但它仍然定义了段落的结尾。

所以,我想做一个跳转到下一行末尾的宏,而不是停在那些末尾有句点的行上。

我使用了这个正则表达式:

[^\.\s][\s]*$

含义:查找既不是句点也不是空格的任何字符,可选地后跟空格到行尾。

然后我会应用 J 命令将匹配的行与下一行连接起来,然后重复。

它在 RegexPal 上运行良好, 但在 Vim 中它停在有一个句点和两个空格的行。

我做错了什么?

最佳答案

与其在宏中将正则表达式与 J 命令结合使用,不如使用正则表达式替换来删除换行符怎么样?这似乎对我有用:

:%s/[^\.]\s*\zs$\n\(^\s*$\n\)*/ /

解释:

  • [^\.]\s*\zs$\n -- 不以句点结尾的行;在换行符之前开始替换。
  • \(^\s*$\n\)* -- 包含仅包含空格的任何其他行

然后这个正则表达式被一个空格替换。

关于regex - 如何在 Vim 中用正则表达式匹配行尾而不是段落?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191238/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com