在Vim中运行Python代码而不保存

时间:2018-04-10 16:18:16

标签: python vim

有没有办法在vim中运行我当前的python代码而不对文件进行任何更改?通常,当我想从vim中测试我的代码时,我会执行这个:

:w !python

但是,这会覆盖我正在编辑的当前文件。通常,我会添加打印语句或评论内容,以了解我的代码无法正常工作的原因。我不希望这些更改覆盖我当前正在处理的任何.py文件的先前版本。有办法吗?也许是保存到临时文件并在之后删除它的组合?

4 个答案:

答案 0 :(得分:5)

您已经回答了自己的问题:

:w !python

将在python 中运行该文件而不用保存它。说真的,亲自测试一下!进行一些更改,运行:w !python,然后运行后运行:e!。它将恢复您的所有更改。

这可行的原因是因为:w 意味着保存。它表示 write ,默认情况下,它选择将文件写入当前选定的文件,这相当于保存。在bash中说,就像

cat myfile > myfile

但是如果你给出一个参数,它会将文件写入该流而不是保存。在这种情况下,您将其写入python,因此文件不会保存。

我在这个主题here上写了更长的答案。

答案 1 :(得分:2)

您似乎对:w[!] filename:w !command感到困惑。

前者将缓冲区写入文件filename,而后者将缓冲区的内容传递给命令command

可能最终导致数据丢失,但后者不能(只要你不在command做疯狂的事情)。

enter image description here

答案 2 :(得分:0)

您可以运行:sav other_filename:w %:h/other_filename,第一个保存副本并打开副本,第二个只保存副本,然后使用您已经使用的命令运行。然后你可以删除你不想要的任何文件。

但是,未经测试,请注意。

答案 3 :(得分:0)

您可以添加地图来执行此操作,这样可以节省大量时间。

:map \b :w<CR>:!python %<CR>

键入\b将保存文件并运行您当前保存的代码。

:map \bb :!python %<CR>

类型\bb将运行未保存的代码。