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