Ir para conteúdo principal
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 atualizado em 02/10/2017, 10:00:00