我注意到如果我正在寻找的函数名称是write
这样的函数,我的ctags会在屏幕上显示定义的潜在结果。详细说明:
class SunsetHandler(tornado.web.RequestHandler):
def on_response(self, response):
if response.error:
self.write(response.error)
在write
( Ctrl + ] 上调用ctags会返回很多结果,而我唯一感兴趣的write
应来自tornado.web.RequestHandler
。
我得到类似下面的内容,这次只有最重要的结果是我正在寻找的结果:
# pri kind tag file
1 F m write env/lib/python2.7/site-packages/tornado/wsgi.py
language:Python class:_WSGIConnection
def write(self, chunk, callback=None):
2 F m write env/lib/python2.7/site-packages/tornado/httputil.py
language:Python class:HTTPServerRequest
def write(self, chunk, callback=None):
3 F m write env/lib/python2.7/site-packages/tornado/httputil.py
language:Python class:HTTPConnection
def write(self, chunk, callback=None):
4 F m write env/lib/python2.7/site-packages/tornado/web.py
language:Python class:RequestHandler
def write(self, chunk):
5 F m write env/lib/python2.7/site-packages/tornado/iostream.py
language:Python class:BaseIOStream
def write(self, data, callback=None):
6 F m write env/lib/python2.7/site-packages/tornado/http1connection.py
language:Python class:HTTP1Connection
def write(self, chunk, callback=None):
7 v WRITE env/lib/python2.7/site-packages/tornado/ioloop.py
language:Python class:IOLoop
WRITE = _EPOLLOUT
除了手动修剪目录的ctags排除列表之外,我如何隔离查询?即使我添加以下内容,对于self.write
:
ctags -R --fields=+l --languages=python --python-kinds=-iv -f ./tags --exclude='env' env/lib/python2.7/site-packages/tornado/*
答案 0 :(得分:0)
Ctags本身已包含该信息(您可以在第4个结果中看到class:RequestHandler
标记。)
问题在于编辑器级别:为了告诉ctags它在RequestHandler
中寻找实例,vim必须能够解析你所在的文件,确定self
是tornado.web.RequestHandler
,然后将其传递给ctags查找。 Vim无法做到这一点,据我所知,除了通过eclim之类的东西之外,没有任何插件可以添加该功能,而不再使用ctags。