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