Acho que depende de onde a maior parte do processamento de arquivos e da tomada de decisões está sendo feita e das instalações de script disponíveis para você fora do Vim. Como a maior parte do processamento que você está fazendo parece estar executando uma sequência de programas, talvez em um pipeline, eu estaria inclinado a colocar tudo isso em um script de shell ou em um arquivo de lote e lançá-lo no Vim. (Você escreveu que você usa sed. Você tem acesso a um shell Unix também?) Se você não tem acesso a um shell Unix e se encontra limitado pelo conjunto de comandos do arquivo de lote, você pode colocar todos os comandos em uma função Vim. Colocar os comandos em uma função Vim lhe dá um pouco mais de flexibilidade e programação mais fácil do que tentar citar tudo certo para um comando ou mapeamento Vim.
Você pode colocar comandos shell dentro de funções facilmente como este
function Foo()
!echo "hello"
endfunction
ou isto:
function Bar()
call system('echo "hello"')
endfunction
Veja
:help usr_41.txt
e especialmente
:help 41.6
:help 41.7
bem como
:help system()
para mais sobre isso. Para mais informações sobre comandos e mapeamentos, consulte
:help usr_40.txt
Você pode escrever um comando para chamar sua função assim:
:command Foo call Foo()
para que você possa executar sua função com
:Foo