Skip to content
Lucas Caton

Como ordernar linhas no Vim

Lucas Caton

Lucas Caton

@lucascaton

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, confira essa minha apresenta√ß√£o sobre o assunto! :)

Post updated at 02/10/2017, 10:00:00