[英]Difference between :pyf % and :!python % for running python code
我用来将F9映射到:pyf %
从vim
运行python文件。 但在看完这个答案之后 ,这表明了
nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr>
只是想知道从vim
会话运行python代码应该首选哪种方法。
:pyfile
是以下变体:python
(从文件中读取代码,而不是直接参数)。 两者都在Vim的嵌入式Python解释器中执行代码。 这主要用于用Python编写的Vim插件。 你可以访问Vim的Python接口(cp。:help :help python-vim
),任何代码/全局变量都会一直存在,直到你退出Vim。
对于没有副作用的琐碎代码,这应该没问题,尽管它不是那个意思。
:!python ...
启动一个外部Python解释器 ,完全独立于Vim。 Vim甚至不需要在这里使用Python支持进行编译。 由于每次调用都是一个单独的进程,因此运行之间没有持久性。 每个都是新鲜的,就像直接从命令行启动脚本一样。 此外,您正在使用系统的默认Python解释器,而不是编译的Vim。
除非你明确写一个Vim插件,否则我会推荐这种方法。
:pythonfile
使用Python内置到vim中执行文件,因此脚本可以导入模块vim
。
!python
执行外部解释器,它无权访问vim内部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.