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.