como faz! tipo de efeito no vim

1

Estou tentando classificar o conteúdo em meu arquivo de texto usando o comando

:1,$sort

Isso resulta em linhas organizadas em ordem com base no caractere inicial - símbolos, letras maiúsculas e, em seguida, letras minúsculas

Agora, se eu usar

:1,$!sort

Eu recebo uma ordem diferente, que parece não fazer sentido. Tudo parece confuso.

Então qual é o papel do comando ! aqui? Por que isso estraga todo o comportamento de classificação? De acordo com o link , ele deve ser um operador de filtro.

    
por faizal 13.08.2014 / 06:49

2 respostas

1

O caractere ! no modo de comando vi faz com que o vi use o aplicativo externo sort para ordenar as linhas.

Seu primeiro comando :1,$sort faz com que vi use seu mecanismo interno de classificação. Em seu segundo comando :1,$!sort todas as linhas são obtidas e fornecidas como entrada padrão para o aplicativo sort .

Apenas tente este comando vi : :!ls -la . Você verá a saída de ls e, depois de pressionar Enter , voltará para vi . Esse mecanismo geralmente é (por exemplo) compilar o código escrito em vi sem fechar e reabrir o arquivo.

Então, você vê, usar ! nesse caso causa mecanismos diferentes. O utilitário ubuntu sort pode ordenar diferente do vi interno.

    
por chaos 13.08.2014 / 07:49
1

De acordo com essa resposta, 1,$!sort é a versão ex -mode. Você entra no modo ex digitando Q no modo normal. A versão do modo normal deste comando é 1G!Gsort de acordo com essa resposta SO. Caso contrário, como o caos diz, ! faz com que o vim abra um shell e execute sort (chamando assim o programa sort ).

    
por muru 13.08.2014 / 08:32