Isso pode ser mais adequado para o link
Mas, de qualquer forma, :h :sort
explica o que está acontecendo lá:
If a {pattern} is used, any lines which don't have a
match for {pattern} are kept in their current order,
but separate from the lines which do match {pattern}.
If you sorted in reverse, they will be in reverse
order after the sorted lines, otherwise they will be
in their original order, right before the sorted
lines.
Em palavras simples, .*\<
corresponde a todas as linhas na entrada e :sort
é executada em todas as linhas.
Embora .*=
corresponda apenas às linhas que contêm =
, essas linhas são classificadas por :sort
. Todas as linhas restantes (aquelas que não corresponderam ao padrão):
142
1804642
1
37844
555839
Não são classificados, mas são simplesmente descartados no início do arquivo. Graças ao fato de que você está usando !
, a ordem de todas as linhas é invertida, então elas terminam no final do arquivo e na ordem inversa.