2013-05-07 74 views
2

我从VIM执行此处描述Python文件的新文件: How to execute file I'm editing in Vi(m)执行当前的Python文件创建,如果当前时间解析

我看到在Windows &的Linux相同的行为。 为了测试,我移动了我的.vim以避免其他插件干扰。然后,我设置:

:set makeprg=python\ % 

现在,当我运行像这样(被称为mini.py)的示例文件

import datetime 

print "hello" 

def foo1(): 
    print "foo" 
    print "str: " + str(datetime.datetime.now()) 
    print "str: " + str(datetime.datetime.now().date()) 

foo1() 

现在,当我执行

:make 
"mini.py" 10L, 173C written 
:!python mini.py 2>&1| tee /tmp/vew33jl/9 
hello 
foo 
str: 2013-05-07 17:01:47.124149 
str: 2013-05-07 
"str: 2013-05-07 17" [New File] 
(3 of 4): 47.124149 

VIM样的扼流圈上datetime.now输出并使用当前日期创建一个新文件并立即显示它。

这是行为吗?如果我注释掉.now()行(now().date()显然不是问题),它会按预期工作,我或多或少地看到我期望的文本输出。

回答

1

当您使用'makeprg'时,Vim根据'errorformat'解析输出以从输出中检索错误消息。日期输出看起来很像典型的错误消息,默认情况下,:make跳转到遇到的第一个错误位置。

你可以做什么:

  • 使用:make!(与爆炸);这将避免跳转到第一个错误。或者:
  • 除了设置'makeprg'之外,还要清除'errorformat'以避免Vim解析输出;除非你只用Vim编辑Python文件;你应该使用:setlocal,而不是全球:set,并将它放入~/.vim/after/ftplugin/python.vim
:setlocal makeprg=python\ % 
:setlocal errorformat= 
+0

所以基本上我会设置: AU文件类型蟒蛇SETLOCAL makeprg =蟒蛇\% AU文件类型蟒蛇SETLOCAL错误格式运用于= 这是等同的,对吧? – 2013-05-07 11:49:53

+0

是的,这是等价的,但是我的解决方案在很多这样的设置中缩放比较好(但是需要':filetype plugin on')。 – 2013-05-07 12:33:58