Vim & Powershell - enviar seleção para o comando

1

Eu tenho uma lista em um arquivo e digamos que eu queira enviá-la para o cmdlet sort (que é apenas para fins de descrição, qualquer cmdlet poderia atuar como um filtro)

Minha configuração do shell vim é:

set shell=powershell
set shellcmdflag=-command

O que eu faço atualmente é:

:.,.+5w c:\out.txt| r !cat c:\out.txt | sort

Isso funciona, mas é muito detalhado e não gosto de especificar o nome do arquivo duas vezes. Na verdade, eu gostaria do uso regular do vim :%!sort , mas ele exibe o erro "E485 - não é possível ler o arquivo ... /Temp/Vi..tmp"

Ele também falha na classificação externa com :w !sort :

powershell -command "sort <C:/Users/MMILIC~1.ITR/AppData/Local/Temp/VIi696.tmp"
...
The '<' operator is reserved for future use.

Nesse caso, o problema é que o PowerShell não suporta o redirecionamento < , mas não vejo nenhuma opção no vim para configurá-lo (além de criar um comando personalizado e usar o VimL).

    
por majkinetor 19.12.2013 / 11:51

1 resposta

0

Não < ? Sem problemas! Use a função Vims system() !

Ajuda do Vim:

 system({expr} [, {input}])
 Get the output of the shell command {expr}...

Para classificação em particular, recomendo a função sort interna do Vims. (%código%) Na maioria das vezes eu uso em seleções visuais: selecione, :h sort , pronto.

    
por 19.12.2013 / 17:16