Скажем, у меня есть сценарий Python с ошибкой во время выполнения:
$ cat example.py
#! /usr/bin/env python3
a = 1/0
который дает:
$ python3 example.py
Traceback (most recent call last):
File "example.py", line 3, in <module>
a = 1/0
ZeroDivisionError: division by zero
Я хочу, чтобы Vim перешел к проблемной строке этого файла (строка 3 в данном случае). Я знаю, что Vim может сделать это, потому что он прекрасно работает для перехвата ошибок во время компиляции в C с gcc
использованием :make
и quickfix
окна.
Конечно, я могу заполнить окно быстрого исправления Vim, :set makeprg=python3\ %
а затем :make
, но оно не переходит к номеру строки, на которую указывает трассировка. Когда я смотрю на :copen
него, он просто выделяет первую строку трассы, и я не могу перейти к соответствующему номеру строки.
(Я использую Vim 7.4 в Debian jessie
на тот случай, если это имеет значение.)
Мои вопросы:
Могу ли я настроить Vim так, чтобы он знал, как получить соответствующий номер строки из трассировки Python?
Могу ли я изменить интерпретатор Python, чтобы он выдавал формат ошибки, который Vim уже знает, как анализировать и получать соответствующий номер строки?
errorformat
соответствующим образом и написать плагин компилятора для Vim (см.:help :compiler
И:help write-compiler-plugin
). Вероятно, не стоит затраченных усилий, если вы точно не знаете , что делаете, и у вас недостаточно энтузиазма, чтобы выкопать все из документов.