2015-02-12 12 views
5

Inserire questo in un file:Vim lookbehind bug positivo?

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

Hello 
A 

Hello 
B 

e quindi cercare questo utilizzando /:

\(Hello\n\)\@<=A 

Sulla mia versione di Vim (7.4, incluse le patch: 1-582), il A sotto Hello è abbinato come previsto, B non è, ma anche il 446 ° A sulla prima riga è abbinato.

C'è anche qualche comportamento strano con questo, se faccio la linea più lunga con più A s, il 632nd A è evidenziato. Se introduco 16 spazi all'inizio della riga, i 447 e 632 caratteri sulla riga sono abbinati.

La mia domanda è, questo riguarda chiunque altro, ed è davvero un bug o la mia ricerca è errata?

risposta

4

Sì, questo sembra un bug. Posso riprodurre con Vim 7.4.608, ma solo con la selezione automatica predefinita :set regexpengine=0.

Per evitare il problema, è possibile modificare l'opzione globale, o esplicitamente specificare un motore all'interno del modello:

\%#=1\(Hello\n\)\@<=A 
\%#=2\(Hello\n\)\@<=A 

Si prega di segnalare questo bug, sia per la vim_dev mailing list o its issue tracker.

+0

L'ho segnalato, il tuo suggerimento funziona quindi deve essere una soluzione facile, c'è qualcosa di sbagliato con il selettore del motore regexp automatico – texasflood

+0

Hai inviato questo alla mailing list? Non ho ancora visto il tuo post. –

+0

L'ho inviato ora – texasflood