Como ordernar linhas no Vim

Comando sort - ordenar linhas

Algo que todo mundo que usa o editor Vim provavelmente conhece é o comando sort. Ele ordena alfabeticamente as linhas de seu texto/código.

Você também pode selecionar algumas linhas e ordernar apenas estas. Para isso, pressione shift + v para entrar no modo de seleção por linha, depois rode :'<,'>sort.

Comando sort u - ordenar linhas excluindo as repeditas

Algo que uso muito também é o parametro u, o qual permite ordernar as linhas, mas excluindo as repetidas:

Antes:

Lucas
Lucas
Lucas
Caton
Caton

Depois de rodar o comando :sort u:

Caton
Lucas

Comando sort /regex/ - ordenar linhas utilizando alguma coluna

E hoje aprendi mais uma coisa realmente interessante ao ordenar um arquivo: como ordernar um texto usando alguma coluna:

Imagine o seguinte texto:

36993 vim 26M
39140 ssh 10M
34551 bash 17M

Nosso objetivo é ordenar pela terceira coluna. Para isto, basta rodar o comando sort passando uma expressão regular como parâmetro, a qual representará o que será ignorado pelo vim até começar a ordenação, ou seja, a partir da coluna que a expressão regular não “casar” mais, ele começará a ordenar. Sendo assim:

:sort /.\+\s.\+\s/

Essa expressão regular casa com qualquer caracter em qualquer quantidade + um espaço + qualquer caracter em qualquer quantidade + um espaço, conforme representado pela parte destacada abaixo:

      
36993 vim 26M
39140 ssh 10M
34551 bash 17M
    

O conteúdo depois disso será a chave para a ordenação.

Resultado:

39140 ssh 10M
34551 bash 17M
36993 vim 26M

Se quisessemos ainda ordernar pela segunda coluna:

sort /\d\{5\}\s/

Bom, é isso! Qualquer dúvida, postem nos comentários!

E se quiserem aprender mais sobre expressões regulares, vejam minha apresentação :)

Deixe um comentário