我有一个如下所示的文本文件:
A.
text
text
text
A.
more text
more text
A.
more text
我想连接“标记”之间的所有线条,A.
使其看起来像:
A.texttexttext
A.more textmore text
A.more text
我如何在 Vim 中做到这一点?
答案1
:%s/\n\(\(A\.$\)\@!.*\)/\1/
替换模式匹配:
- 新队,
包含以下组的
- 不是字符串
A.
后面紧跟着行尾,然后 - 直到行尾为止的任意字符
- 不是字符串
和:
- 除起始换行符(即上面的组)之外的所有内容,
并在全球范围内推行这一举措。
答案2
这也有效(当第一行以 开头时A.
)
:v/^A/-1j!
答案3
更通用的解决方案,也适用于更复杂的输入
:$s/$/A./ | g/A./,/A./- s/\n\(A\.\)\@!//
:$s/A\.$//
A.
在文件末尾插入缺失值- 删除标签之间的所有换行符
A.
- 删除
A.
文件末尾的结束标记
*我必须在单独的命令中运行此命令,否则 vim 会在删除换行符之前执行它。可能可以通过某种方式解决。
输入
B.
Don't join
A.
text
text
text
A.
more text
more text
A.
more text
输出
B.
Don't join
A.texttexttext
A.more textmore text
A.more text