簡體   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