Vim w / Python:让“:make”把我带到错误处

时间:2014-01-30 16:24:04

标签: python vim

如果我有一个python文件,如:

  def Bar():
      raise NotImplementedError

  def Foo():
      Bar()

  if __name__ == '__main__':
      Foo()

我输入:在vim中制作,它很好地构建了一个:cwindow充满相关区域以向上移动追溯。

但是,它会将我的光标默认为通话的第一帧(在名称 =='主要'中)。我可以以某种方式更改默认行为,因此我需要实际调用异常吗?

- 更新 - 回答Ingo的问题:

:makeprg / errorformat设置为gentoo安装的默认值。那就是:

makeprg=python %
errorformat=%A  File "%f"\, line %l%.%#,%Z%[%^ ]%\@=%m 

quickfix窗口中的堆栈跟踪如下所示:

    main.py
     1 || Traceback (most recent call last):
     2 main.py|8|
     3 ||     Foo()
     4 main.py|5|
     5 ||     Bar()
     6 main.py|2|
     7 ||     raise NotImplementedError
     8 || NotImplementedError

我被宠坏了,我喜欢它,如果我开始'加注'(第7行)并且可以:cp'向后'根据需要。

1 个答案:

答案 0 :(得分:3)

此代码将导航到最内层的异常。

function! s:InnermostExceptionInQFList()
  let s:num = 0
  for item in getqflist()
    if item.lnum > 0
      let s:num += 1
    endif
  endfor
  if s:num > 0
    try
      silent execute(s:num . 'cnext')
    catch /E553:/
      " E553: No more elements
    endtry
  endif
  silent execute('wincmd w')
endfunction

autocmd! QuickfixCmdPost * call s:InnermostExceptionInQFList()