Vim w / Python:使“:make”带我到错误

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

  def Bar():
      raise NotImplementedError

  def Foo():
      Bar()

  if __name__ == '__main__':
      Foo()

然后我输入:make在vim中,它很好地构建了我:cwindow填充了相关区域以提升回溯。

但是,它将我的光标默认为调用的第一帧( 名称 ==' main ')。 我可以以某种方式更改默认行为,因此它会将我带到实际的异常调用?

- 更新 - 回答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'。


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

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()
链接地址: http://www.djcxy.com/p/18911.html

上一篇: Vim w/Python: Make ":make" take me to the error

下一篇: impossible to write on stack (stack overflow)