我正在使用universal-ctags 在我的项目中定义的对象之间导航,它工作得很好。然而,我正在努力寻找如何将 python 内置对象和包依赖项包含到 universal-ctags 的范围中。最重要的是,我使用诗歌(不是我的选择),它将依赖项定位到项目目录之外的其他位置。 (如果我的项目是
.
,相关的python依赖是../../../.cache/pypoetry/....
)
否则,我希望
join
、choice
、lru_cache
等)、依赖对象(Model
)时适用于每种情况。来自 Django,ViewSet
来自 DRF 等...)
有什么方法可以指定 universal-ctags 来获取所有这些附加引用吗?
谢谢!
我认为存在一个选项可以添加路径以包含其他内容以供查看,但我没有找到任何相关内容。
我在 Debian 11 上使用 universal-ctags、vim
您可以缝合一条单线来为您完成此操作。
正如 romainl 所评论的,您可以传递多个路径来生成单个标签文件。这就是答案。不过,我们可以添加一些绒毛。
Python 标准库模块可以在
sys.path
中找到,例如/usr/lib/python3.9
在我的 Debian 盒子上。我认为这种情况很少改变(仅当您升级 Python 安装时)。自动化这个似乎不值得。
Poetry的virtualenv比较不稳定,所以应该自动找到路径。根据this诗歌问题中的信息,您可以通过
poetry show -v
获取virtualenv的路径(以及一些我们不关心的输出)。
用一点bash胶将其放在一起,我们得到以下一行:
ctags -R . /usr/lib/python3.9 $(poetry show -v | head -n1 | cut -d':' -f2)
您可能希望将其转换为 shell 脚本并附加
"$@"
以传递其他选项。
为了扩展Friedrich的答案,Poetry中有一种方法可以使用
poetry env info --path
直接获取虚拟环境的路径。所以命令就变成了:
ctags -R . $(poetry env info --path)
我认为没有必要添加Python解释器,因为这也是Poetry虚拟环境的一部分。