我在 vim 中通过 YCM 使用 jedi,并在我的项目中看到一些奇怪的行为,关于usages
在 jediHttp 服务器上使用端点。基本上它只在我的项目中找到一小部分类或函数的用法。它确实找到了当前文件中的所有用法,但没有找到其他文件中的绝大多数。该GoTo
命令工作正常,并将按预期在项目的任何位置打开一个新缓冲区。但是,当我从定义开始并尝试usages
通过GoToReferences
命令查看所有内容时,它只会产生大约 20% 的实际用法。
我曾尝试制作一个虚拟项目来重新创建该行为,它似乎奏效了。这是简单的项目结构:
> tree -I __pycache__
.
├── setup.py
└── test_jedi
├── classes.py
├── __init__.py
├── mod1
│ ├── __init__.py
│ └── recessed.py
└── script.py
2 directories, 6 files
以下是这些文件的内容:
类.py
class Foo:
def __init__(self, a):
self.a = a
def make_a(self):
print('hello')
mod1/recessed.py:
from test_jedi.classes import Foo
Foo(5).make_a()
print('Ran this')
脚本.py:
from classes import Foo
a = Foo(5)
a.make_a()
现在,在 vim 中,我可以在缓冲区中使用带有凹陷.py 的 vimGoTo
来Foo
立即打开classes.py
缓冲区。GoToReferences
然后当我从缓冲区尝试时,classes.py
我只得到usages
inscript.py
和 in classes.py
。我不知道为什么绝地没有向我展示recessed.py
这是显示的快速修复缓冲区:
classes.py|2 col 7| class Foo
script.py|2 col 21| from classes import Foo
script.py|5 col 5| a = Foo(5)
但显然没有提到 mod1/recessed.py 显然有Foo
.
有任何想法吗?