vim - 在行的开头搜索字符串,然后删除上面一行的最后3个字符

时间:2014-07-28 18:04:03

标签: search vim

我想在文件中搜索出现在行首的字符串, 然后删除上面一行中的最后3个字符。

所以在下面的例子中我希望搜索“结果选择”然后在上面的行上删除2个空格后跟一个向后斜杠

  0.9546  \
  1.2356  \
result select bla bla
result case bla bla 

会变成,

  0.9546  \
  1.2356
result select bla bla
result case bla bla

非常感谢,

2 个答案:

答案 0 :(得分:2)

使用全局命令搜索该行。然后在上一行中删除最后两个空格以及出现在该行末尾的\

:g/^result/-1s/  \\$//

使用-1作为替换命令的范围,可以找到上一行。

答案 1 :(得分:0)

这将搜索并删除任何三个字符,然后是EOL,然后是“结果选择”一词。

%s/...\(\nresult select\)\@=//c

只是为了解释一下......

...匹配任意三个三个非EOL字符。如果您要处理短于三个字符的行,则可以使用.\{,3\}代替%s/.\{,3\}\(\nresult select\)\@=//c

\(\nresult select\)只需要\nresult select并将其放入一个原子中,这样我们就可以将它与前瞻匹配一起使用。

\@=告诉vim寻找,但不要在匹配的结果中包含前一个原子。所以我们只查找匹配后跟换行符和'结果选择'

//将匹配的字符串替换为空。

c只是强制用户手动确认每个替换,因为这个正则表达式是如此奇怪,它可能会做坏事。