Как я могу перейти к определению функции, импортированному из другого файла, с помощью jedi-vim?

Я регулярно использую <leader>d для перехода к определению функции. Когда это определение взято из другого файла, оно приводит меня к строке импорта файла.

Как я могу использовать jedi-vim для перехода к файлу, который определяет функцию, импортированную в эту строку?


person krumpelstiltskin    schedule 24.10.2016    source источник


Ответы (1)


Похоже, что-то не так с вашей конфигурацией... Дважды проверьте, что ваш filetype действительно python. Это должно работать, согласно документации:

5.2. g:jedi#goto_command

Функция: jedi#goto()

По умолчанию: <leader>d

Перейти к определению (или заданию)

Эта функция сначала пробует jedi#goto_definitions и возвращается к jedi#goto_assignments для встроенных модулей. Выдает ошибку, если ничего не найдено. ПРИМЕЧАНИЕ: эта реализация может быть изменена. Ссылка: https://github.com/davidhalter/jedi/issues/570

Эта команда пытается найти исходное определение функции/класса под курсором. Как и функция jedi#goto_assignments(), она не работает, если определения нет в исходном файле Python.

Разница между jedi#goto_assignments() и jedi#goto_definitions() заключается в том, что последний выполняет рекурсивный поиск. Возьмем, к примеру, следующую структуру модуля:

# file1.py:
from file2 import foo

# file2.py:
from file3 import bar as foo

# file3.py
def bar():
    pass

Функция jedi#goto_assignments() приведет вас к

from file2 import foo

оператор в file1.py, а функция jedi#goto_definitions() приведет вас к

def bar():

строка в файле3.py.

person George Hilliard    schedule 24.10.2016
comment
Ты прав. Он работает с установленными библиотеками. Я этого не понимал. Проблема с библиотеками, которые я написал. Я собираюсь задать другой вопрос, связанный с этой проблемой. - person krumpelstiltskin; 25.10.2016
comment
Другой вопрос находится в stackoverflow.com/questions/40235611/. - person krumpelstiltskin; 15.11.2016