我正在尝试编写一个用于删除文本换行的vim脚本,我正在使用以下代码,但它不能提供准确的输出。例如\ string {this表示换行}如果“this”出现在第一行,“indication”在第二行e.t.c然后我如何删除文本换行。有可能吗?
:%s/\\string{\zs\(\_[^}]*\)\ze}/\1/gec
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}
答案 0 :(得分:2)
此行符合您的要求:
%s/\\string{\_[^}]*/\=substitute(submatch(0),"\n",' ','g')/
它改变了:
foobar
\string{1
2
3
4
5
}
foobar
成:
foobar
\string{1 2 3 4 5 }
foobar
答案 1 :(得分:1)
如果您提供更长的文本示例,以及您想要使用它做什么,那么理解您的问题会更容易。如果我理解正确,您可以删除包含\\string{this
的行的换行。
您可以使用:%g/\\string{this/j
。它在与j
模式匹配的每一行上执行\\string{this
命令。
输入:
some text
\string{this
indicate}
more text
变成:
some text
\string{this indicate}
more text