Ctags:找到一个共同的函数名

时间:2017-10-14 18:00:46

标签: vim ctags

我注意到如果我正在寻找的函数名称是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/*

1 个答案:

答案 0 :(得分:0)

Ctags本身已包含该信息(您可以在第4个结果中看到class:RequestHandler标记。)

问题在于编辑器级别:为了告诉ctags它在RequestHandler中寻找实例,vim必须能够解析你所在的文件,确定selftornado.web.RequestHandler,然后将其传递给ctags查找。 Vim无法做到这一点,据我所知,除了通过eclim之类的东西之外,没有任何插件可以添加该功能,而不再使用ctags。