global !p import string, vim import textwrap _snips_fns = {} def py(*args): import re old_a = vim.eval('@a') cmd = ' '.join(args) if cmd.startswith('print '): cmd = cmd[5:] splits = re.split('\s', cmd) if py.last_cmd != cmd: vim.command('let @a=""') vim.command('redir @a') vim.command("""py out = [] try: gs = globals() out.append(str(eval(''' {0} '''.strip()))) if out[-1].startswith('$)', 'some address', r) except Exception as e: r = str(e) py.last_cmd = cmd if r: py.cache = r return r return '' else: py.last_cmd = cmd return py.cache py.last_cmd = None py.cache = None endglobal snippet p "p" >>> ${1: } `!p d = dir() snip.rv = '' if t[1] and t[1].strip() != 't': try: snip.rv = py(t[1]) except: pass if not snip.rv: snip.rv = '...' ` $2 $0 endsnippet