pyf%和之间的差异:!python%用于运行python代码

pyf%和之间的差异:!python%用于运行python代码,python,vim,Python,Vim,我使用将F9映射到:pyf%来从vim运行python文件。但是在读了这篇文章之后 nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr> nnoremap:exec'!python的shellescape(@%,1) 只是想知道从vim会话运行python代码时应该首选哪种方法。:pythonfile将内置python的文件执行到vim中,以便脚本可以导入模块vim !python执行对

我使用将F9映射到
:pyf%
来从
vim
运行python文件。但是在读了这篇文章之后

nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr>
nnoremap:exec'!python的shellescape(@%,1)

只是想知道从
vim
会话运行python代码时应该首选哪种方法。

:pythonfile
将内置python的文件执行到vim中,以便脚本可以导入模块
vim


!python执行对vim内部没有任何访问权限的外部解释器。

:pyfile
:python
的变体(它从文件中读取代码,而不是作为直接参数)。两者都在Vim的嵌入式Python解释器中执行代码。这主要是针对用Python编写的Vim插件。您可以访问Vim的Python接口(cp.
:help Python Vim
),并且任何代码/全局代码都将持续存在,直到您退出Vim为止

对于没有副作用的琐碎代码,这应该是好的,尽管它不是为了这个


:!python…
启动一个与Vim完全分离的外部python解释器。Vim甚至不需要在这里使用Python支持进行编译。由于每个调用都是一个单独的过程,因此在运行之间没有持久性。每个脚本都是新的,就像直接从命令行启动脚本一样。此外,您使用的是系统默认的Python解释器,而不是Vim编译时所使用的解释器


我会推荐这种方法,除非你明确地写了一个Vim插件。

谢谢,Ingo,这就是我想要的