Procurar por “not newline” no vim?

2

Para pesquisar por A T\n no vim, posso fazer

/A T\n

Qual seria o equivalente para não a nova linha no final?

/A T[^\n]

não funcionou.

    
por The Unfun Cat 07.02.2014 / 13:13

1 resposta

4
/A T.

procura A T seguido por um caractere não pertencente à nova linha ( . é o operador regex padrão que corresponde a qualquer caractere (exceto a nova linha)).

/A T\n\@!

procura A T não seguido por um caractere de nova linha (você verá a diferença se você set hls ). \@! é um operador regexp específico do vim que fornece funcionalidade semelhante ao operador regexp (?!...) perl / PRCE (look-ahead negativo). Isso funcionaria no caso de um arquivo que não seja de texto e terminasse em A T (e sem nova linha).

Você também pode usar a perspectiva positiva:

/A T.\@=

( A T , desde que seja seguido por um caracter não pertencente à nova linha).

Você também pode fazer:

/A T\ze.

O mesmo que /A T. , exceto que o final da sequência correspondida é posterior ao T . \zs e \ze são novamente vim específicos e podem ser usados para restringir a sequência correspondida (conforme visto na pesquisa de realce) dentro do padrão. O equivalente perl / PCRE de \zs é \K (em versões recentes).

Dito isto, /A T[^\n] funciona para mim (vim 7.4.52), embora [...] nunca correspondesse a uma nova linha (você precisaria de \_[...] para incluir a nova linha), então . é mais simples .

    
por 07.02.2014 / 13:23