繁体   English   中英

用于运行python代码的:pyf%和:!python%之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM