我想在文件中搜索出现在行首的字符串, 然后删除上面一行中的最后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
非常感谢,
答案 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
只是强制用户手动确认每个替换,因为这个正则表达式是如此奇怪,它可能会做坏事。