Utilizo un vim que tiene compilado el intérprete de Python.
Origen un archivo de Python que tiene esta función:
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)
Y asignarlo a un atajo 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>
Anteriormente había configurado algunas variables de entorno para determinar el terminal exacto en el que se ejecutaría si usaba gvim, o en el mismo terminal si no en una X.
Luego, generalmente solo escribo '; ri' en un búfer de Python para ejecutarlo (generalmente para probarlo).
:!gcc % && ./a.out