gvim consulta de pesquisa para condições AND & OR mistas

1

Oi eu quero pesquisar texto dentro do gvim com os seguintes critérios %código%. Eu sei para a&b&(c|d) é a&b e para /.*a\&.*b é c|d mas combinar esses dois não funciona. qual pode ser o comando exato?

edit: eu tentei /c\|d , mas ele está tomando como .*a\&.*b\&.*(c\|d) ORed com .*a\&.*b\&.*(c , colchetes inc.

edit2: quebrando a expressão para d) | a&b&c está funcionando, a&b&d , mas isso não é algo que estou procurando.

    
por Krishanu Banerjee 21.01.2016 / 06:46

1 resposta

0

Como você descobriu, os padrões de pesquisa do vim são interpretados com \& vinculando mais que \| (ou seja, \& tem precedência maior que \| ), e não parece haver nenhuma maneira de ignorar isso. No entanto, a propriedade distributiva diz que

(P∧(Q∨R)) ⇔ ((P∧Q)∨(P∧R))

onde “∧” representa AND (ou seja, \& ) e “∨” representa OR (ou seja, \| ). Substituindo

  • P = a & b
  • Q = c
  • R = d

podemos deduzir que

a&b&(c|d) = (a&b&c) | (a&b&d)

para que você possa fazer a pesquisa "a & b & (c | d)" com o regex .*a\&.*b\&.*c\|.*a\&.*b\&.*d . Claro, isso não é ideal.

Nota: Esta solução foi identificada pelo OP.

    
por 04.02.2016 / 04:59

Tags