评论者和其他答案指出了如何从 vim 运行文件。但他们掩盖了一些非常强大的可能性。我想更详细地解释其中一些是如何工作的。
在 vim 中运行 python 脚本的最简单方法是在文件上调用 python 解释器,例如
:!python %
或者,我更愿意这样做以确保没有未保存的更改,
:w | !python %
但在 vim 中运行 python 脚本甚至不需要文件。原因是因为 :w != save! :w 表示 write,如果没有提供参数,它恰好写入你正在编辑的文件。但是,您可以写入到 STDOUT、另一个文件,甚至另一个程序。因此,如果您想在没有文件保存和运行的情况下将缓冲区作为 python 代码运行,您可以简单地执行以下操作:
:w !python
这意味着写入当前缓冲区到外部程序“python”。这实际上只是将缓冲区的内容直接发送到 python。
现在这里真的很酷。在 vim 中,:w 是一个“ex 命令”,例如您从最初来自 ex 的 vim 命令行运行的命令,这是一个非常古老的基于行的 unix 文本编辑器。 ex 命令最棒的地方在于,由于它们都是基于行的,因此您可以直接说明您希望命令应用于哪些行。例如:
:2w myfile.txt
将只写第二行到文件“myfile.txt”。您甚至可以提供一个范围,例如
:2,7w myfile.txt
会将第 2-7 行写入“myfile.txt”。这意味着使用您的示例,我们可以运行
:1w !python
运行只是
print('hello')
为了更方便,您可以使用可视模式选择您想要运行的每一行,这会自动为您填写正确的范围。这看起来像
:'<,'>w !python
为了更方便,我建议添加类似
xnoremap <leader>p :w !python<cr>
到您的.vimrc。然后您可以直观地选择您想要的任何内容并通过键入
将其作为 python 代码运行
\p
(将 \ 替换为您设置为领导者的任何内容)。你也可以这样做
nnoremap <leader>p :w !python<cr>
或
nnoremap <leader>p :w | !python %<cr>
取决于您是否要保存到文件。