作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试连接一个段落中的所有行,但不是将一个段落与下一个段落连接。
在我的文本文件中,段落不是由它们之间的空行定义的,而是在行尾有一个句点。句点后可能有空格,但它仍然定义了段落的结尾。
所以,我想做一个跳转到下一行末尾的宏,而不是停在那些末尾有句点的行上。
我使用了这个正则表达式:
[^\.\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/
我是一名优秀的程序员,十分优秀!