vim 搜索括号内的字符串

vim 搜索括号内的字符串

我有一串这样的字符串:

[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..

我想删除括号内的所有内容以及美元符号和后面的空格。

我试过:

:g/\[.+?\]\$\s/d

但是它说没有找到模式。正则表达式在python中工作:

>>> print x
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..
[some_strings_in_square_bracket]$ some_strings_not_in ..

>>> print re.sub('\[.+?\]\$\s', '', x)
some_strings_not_in ..
some_strings_not_in ..
some_strings_not_in ..
some_strings_not_in ..
some_strings_not_in ..

答案1

使用这个,它将用空值替换匹配的正则表达式。

:%s/^\[.*\]\$\s\+//

即使:g/\[.+?\]\$\s/d匹配了您想要的内容,d最后也会删除该行而不是匹配的正则表达式。

至于为什么不匹配,您需要转义+。Vim 默认将其视为文字,而不是一个或多个。

相关内容