O Vim já usa um shell (veja :set shell? ) para executar o comando externo; scripts com linhas shebang devem funcionar bem. A maneira canônica de executar o buffer atual é
:!./%
(Prepending ./ para lidar com o diretório atual não sendo parte de PATH . Isso pressupõe que o script já é executável ( :!chmod +x % , talvez feito em um mapeamento / ftplugin.)
Você pode executar novamente com apenas :!! . Além disso, existem soluções mais sofisticadas para a execução de conteúdo de buffer (parcial, não salvo, etc.) em intérpretes externos; verifique a seção de plug-ins do vim.org .