使用Gvim运行Python

8
  • 打开 gVim。
  • 然后使用文件菜单和菜单项“打开”打开一个名为 pi.py 的文件,该文件包含以下微小脚本:

enter image description here

如何使用 gVim 执行此代码?


编辑

如果我使用 :! python pi.py:w !python -,则会得到以下结果:

enter image description here


@SatA - 抱歉 - 正确的 Gvim - whytheq
@Will Hardy 的解决方案似乎有效 :) - SatA
@SatA - 在我的电脑上,如果我输入 :w !python,那么我会得到我在 OP 中添加的错误。你认为我需要更多地配置 Vim,以便它找到 Python 解释器吗? - whytheq
1
嘿,是的,我刚刚提出了一个解决方案的建议,这样可以帮到你吗? - SatA
4个回答

12
你不需要保存文件,你可以将当前缓冲区作为标准输入(stdin)运行到命令中,例如python,只需输入:
:w !python -

(横线最后可能是不必要的,Python通常默认使用stdin)

编辑:由于您是vim新手,请注意这不会保存文件,它只会运行它。您可能需要学习如何保存您的文件。


如果你使用的是Windows,我无法帮你太多,但我假设你没有在PATH环境变量所列出的位置安装Python。 - Will Hardy
1
我以为 :w 是保存文件的命令?......那么为什么 :w !python 不等同于 "保存文件" + "运行 Python" 呢? - whytheq
5
:w 表示写入 (write),:w myfile.py 表示写入到名为 myfile.py 的文件中,而 :w !somecommand 则表示将当前状态发送到指定的命令(例如 python),并不会保存到文件。在翻译过程中,我尽可能保持原文意思的前提下让内容更加通俗易懂。 - Will Hardy
谢谢,尽管这种差异可能相当微妙?如果我打开一个文件并编辑它,然后使用:w,然后关闭文件(Vim不会询问是否保存更改),然后重新打开文件,我发现我的更改仍然存在-更改已经被保存。那么,“保存”比:w做了更多的事情呢? - whytheq
请看一下我在这里的屏幕截图... 在 Save 旁边它写着 :w - whytheq
1
:w !somecommand 不会将您的文件保存到磁盘上,而是将其“写入”到您在 :w 后面给出的命令中。:w 后面跟着的内容会改变它的行为。只有 :w 会将更改保存到磁盘上,这也是您想要的。 - Will Hardy

5
如果您的vim编译支持python,则可以使用:pyfile %运行当前文件。(python 2.7)
如果您的vim支持python 3,请改用:py3file % 参考pyfile帮助

我怎么知道Python是否已经编译到GVim中?这是我需要自己做的吗? - whytheq
输入 echo has("python")has("python3")。如果您支持 python 2.7,则第一个将返回 1。如果您支持 python3,则第二个将返回 1。否则它将返回 0。请参阅 此链接 - FDinoff
echo has("python") 返回 1 ...我刚刚将 ;C:\python27\; 添加到我的环境变量中,这似乎有所帮助。感谢提供的好参考! - whytheq
":pyfile %" 运行正常 - 而 ":w !python" 在控制台中运行。你的答案在 gvim 中运行。 - whytheq

4

像这样。在vi命令模式下键入以下命令。

:! python test.py

如果我将test.py更改为实际文件名pi.py,那么我会得到一个[Errno 2] No such file or directory错误。 我应该将存储.py文件的目录添加到我的PC环境路径中吗? - whytheq
如果我在gvim中运行:w pi.py,它会出错...但是如果我只运行:w,那么它会告诉我已经保存了文件。 - whytheq

2
似乎你的%path%环境变量中没有包含你的python安装路径。
请按照以下步骤操作:
  1. 右键点击“我的电脑”
  2. 选择“属性”
  3. 进入高级设置
  4. 进入“环境变量”
  5. 选择“PATH”,然后点击“编辑”
  6. 在行末添加以下内容:“;C:\python27\;”(不用引号)
注意:将目录更改为你的python目录(例如c:\python30)。
保存所有更改,然后关闭vim和所有CMD窗口,再次尝试。

先尝试不重启来解决问题 :) - SatA
尽管现在环境路径已经设置,但我实际上正在使用Hardy的答案来运行代码! - whytheq
最好将这两个解决方案结合在一起。因为Hardy的答案非常有趣和信息量丰富,同时也回答了你的基本问题 ;) - SatA
什么意思:写一个自己的解决方案,将你们两个的答案结合起来?……那么你们两个都得不到分数。 - whytheq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接