Eu uso um vim que possui o interpretador Python compilado.
Eu fonte um arquivo python que tem esta função:
def pyterm(filename="", interactive=1):
cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
if "DISPLAY" in os.environ:
return run_config(os.environ.get("XTERM"), cmd)
else:
return os.system(cmd)
E mapeie-o para um atalho de teclado:
nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>
Eu tinha definido anteriormente algumas variáveis de ambiente para determinar o terminal exato a ser executado se estiver usando o gvim, ou no mesmo terminal se não estiver em um X.
Normalmente, digito '; ri' em um buffer Python para executá-lo (geralmente para testá-lo).
:!gcc % && ./a.out