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, confira essa minha apresentação sobre o assunto! :)