vim pesquisa por strings em colchete

0

Eu tenho várias strings assim:

[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 ..

Desejo remover tudo entre colchetes, além do cifrão e depois do espaço em branco.

Eu tentei:

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

mas diz Padrão não encontrado. regex está trabalhando em 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 ..
    
por thkang 29.05.2013 / 00:16

1 resposta

2

Use isso em vez disso, substitui o regex correspondido por nada.

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

Mesmo se :g/\[.+?\]\$\s/d correspondesse ao que você queria, o d no final excluirá a linha e não a regex correspondente.

Por que isso não corresponde, você precisa escapar do + . O Vim trata isso como um literal por padrão, não como um ou mais.

    
por 29.05.2013 / 01:33

Tags