我正在尝试编写一个用于删除文本换行的vim脚本,我使用了以下代码,但它没有提供确切的输出。如果"this"出现在第一行,"indicate"出现在第二行e.t.c,那么我如何删除换行符。有可能吗?
:%s/\string{zs(_[^}]*)ze}/1/gec
根据OP的评论进行编辑:
for example (i/p): string{1 <enterkey> 2 <enterkey> 3 <enterkey>
4 <enterkey> 5 <enterkey>}. i need (o/p) string{1 2 3 4 5}.
之前我有:
string{1
2
3
4
5
}
之后我想要:
string{1 2 3 4 5}
在我拥有(新模式)之前:
string{1
{2}
{3}
4
5}
之后我想要:
string{1 {2} {3} 4 5}
这一行执行您想要的操作:
%s/\string{_[^}]*/=substitute(submatch(0),"n",' ','g')/
它改变了:
foobar
string{1
2
3
4
5
}
foobar
进入:
foobar
string{1 2 3 4 5 }
foobar
如果你给出一个更长的文本示例,以及你想用它做什么,会更容易理解你的问题。如果我理解正确,你可以删除包含\string{this
的行上的换行符。
您可以使用:%g/\string{this/j
。它在与\string{this
模式匹配的每一行上执行j
命令。
输入:
some text
string{this
indicate}
more text
转化为:
some text
string{this indicate}
more text