我用来将 F9 映射到:pyf %
以运行来自vim
的python文件。但在阅读了这个answer之后,这表明了
nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr>
只是想知道从vim
会话运行python代码应该首选哪种方法。
答案 0 :(得分:3)
:pyfile
是:python
的变体(从文件读取代码,而不是直接参数)。两者都在Vim的嵌入式Python解释器中执行代码。这主要用于用Python编写的Vim插件。您可以访问Vim的Python接口(cp。:help python-vim
),任何代码/全局变量都会一直存在,直到您退出Vim。
对于没有副作用的琐碎代码,这应该没问题,虽然它不适用于此。
:!python ...
启动外部Python解释器,与Vim完全分开。 Vim甚至不需要在这里使用Python支持进行编译。由于每次调用都是一个单独的进程,因此运行之间没有持久性。每个都是新鲜的,就像直接从命令行启动脚本一样。此外,您正在使用系统的默认Python解释器,而不是编译的Vim。
除非您明确编写Vim插件,否则我会推荐这种方法。
答案 1 :(得分:2)
:pythonfile
使用内置于vim的Python执行文件,因此脚本可以导入模块vim
。
!python
执行无法访问vim内部的外部解释器。