vim: como canalizar o comando assim?

1

Eu tenho um arquivo de texto ..

value #value2
 value2 #value3
...

Eu quero classificar -f e adicionar duas guias antes de # então eu fiz

:'<,'>norm f#i^I^I |!sort -f

Mas me dê uma saída ruim! Eu conheço uma solução alternativa, use dois comandos separados

:'<,'>norm f#i^I^I^I
:'<,'>!sort -f

Mas a questão é: é possível canalizar esses comandos?

    
por elbarna 02.02.2018 / 23:32

1 resposta

1

Se você olhar para :help :normal , encontrará

This command cannot be followed by another command, since any '|' is considered part of the command.

Observe também que | não é um canal. É apenas uma maneira de "concatenar" comandos. É como separar dois comandos do shell com ; . Por esse motivo, o intervalo aplicado a um comando não é transferido para comandos subsequentes.

A alternativa mais próxima que eu posso pensar em não envolver uma função personalizada ou algo assim é usar :substitute e re-especificar o intervalo:

:'<,'>s/#/\t\t\t#/ | '<,'> !sort -f
    
por 03.02.2018 / 00:05

Tags