有没有办法在vim中运行我当前的python代码而不对文件进行任何更改?通常,当我想从vim中测试我的代码时,我会执行这个:
:w !python
但是,这会覆盖我正在编辑的当前文件。通常,我会添加打印语句或评论内容,以了解我的代码无法正常工作的原因。我不希望这些更改覆盖我当前正在处理的任何.py文件的先前版本。有办法吗?也许是保存到临时文件并在之后删除它的组合?
答案 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
做疯狂的事情)。
答案 2 :(得分:0)
您可以运行:sav other_filename
或:w %:h/other_filename
,第一个保存副本并打开副本,第二个只保存副本,然后使用您已经使用的命令运行。然后你可以删除你不想要的任何文件。
答案 3 :(得分:0)
您可以添加地图来执行此操作,这样可以节省大量时间。
:map \b :w<CR>:!python %<CR>
键入\b
将保存文件并运行您当前保存的代码。
:map \bb :!python %<CR>
类型\bb
将运行未保存的代码。