Nói rằng tôi có một kịch bản python có lỗi thời gian chạy:
$ cat example.py
#! /usr/bin/env python3
a = 1/0
cung cấp cho:
$ python3 example.py
Traceback (most recent call last):
File "example.py", line 3, in <module>
a = 1/0
ZeroDivisionError: division by zero
Tôi muốn Vim nhảy đến dòng có vấn đề của tập tin đó (dòng 3 trong trường hợp này). Tôi biết Vim có thể làm điều này bởi vì nó hoạt động tốt khi bắt lỗi tại thời gian biên dịch trong C bằng gcc
cách sử dụng :make
và quickfix
cửa sổ.
Chắc chắn, tôi có thể điền vào cửa sổ quickfix của Vim :set makeprg=python3\ %
và sau đó :make
, nhưng nó không nhảy đến số dòng nơi dấu vết trỏ tới. Khi tôi nhìn vào, :copen
nó chỉ làm nổi bật dòng đầu tiên của dấu vết và tôi không thể chuyển sang số dòng có liên quan.
(Tôi đang sử dụng Vim 7.4 trên Debian jessie
trong trường hợp có vấn đề.)
Câu hỏi của tôi là:
Tôi có thể định cấu hình Vim để nó biết cách lấy số dòng liên quan từ truy nguyên Python không?
Tôi có thể sửa đổi trình thông dịch Python để tạo ra một định dạng lỗi mà Vim đã biết cách phân tích và lấy số dòng liên quan không?
errorformat
phù hợp và viết plugin trình biên dịch cho Vim (xem:help :compiler
và:help write-compiler-plugin
). Có lẽ không đáng để nỗ lực nếu bạn không biết chính xác những gì bạn đang làm và bạn không đủ nhiệt tình để khai thác mọi thứ từ các tài liệu.