如何在vim中的两个命令之间获取字符串

时间:2016-01-05 05:26:18

标签: regex vim

我正在尝试编写一个vim脚本来获取两个命令之间的字符串。例如: \string{new strings},如果新字符串包含空行或空格

,我想获取它
:%s/\\string{[^}]*\n*[^}]*}/new/gec

2 个答案:

答案 0 :(得分:2)

您的要求不是那么明确,但如果您想要

  

获取"新字符串"如果它包含空行或空格

你也评论道:

  

选择\ string {} 大括号内的内容,即使有任何空格或行

这一行是它,它是一个搜索命令,而不是:s

/\\string{\zs\_[^}]*

如果您想对\string{}之间的内容进行替换,可以使用以下模式:

%s/\\string{\zs\_[^}]*\ze}/whatever/g

请注意,您也可以写s/\\string{\zs\_[^}]*/whatever/g\ze}将确保结束括号必须在那里。不确定是否需要这样做。

有关\_[]的详细信息,请执行:h \_[

答案 1 :(得分:0)

使用此代码

%s/\\string{[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]
*}/new/gec