前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 代码跳转

Python 代码跳转

作者头像
py3study
发布2020-01-06 11:21:41
1.7K0
发布2020-01-06 11:21:41
举报
文章被收录于专栏:python3python3

用vim作python开发,在看源码的时候,发现无法跳转,发现ctags是专门为c语言准备的。

很多人不会注意到python的发行包下Tool/scripts的文件夹。里面的ptags.py可以用来生成vim需要的tags(eptags.py for emacs)

脚本的目录是python源码下的Tool/script/ptags.py。 如果不想去找,可以直接copy一份,http://svn.python.org/projects/python/trunk/Tools/scripts/ptags.py,放在你方便的位置,然后使用ptags.py生成tag。

为当前目录生成tag文件 :  ptags.py *.py

为整个项目生成tag文件:find  . -name \*.py -print | xargs ptags.py

然后就有tag了。在vim的配置文件中导入tag文件的目录就可以了。

比如在.vimrc 中添加:

set tags+=tags

set autochdir

同个文件再跳就是这样的: /home/bigzhu/.local/share/Trash/files/Python-2.5.2/Tools/scripts/ptags.py  *.py

源码:

转自http://www.oschina.net/code/explore/Python-3.1.3/Tools/scripts/ptags.py
#! /usr/bin/env python

# ptags
#
# Create a tags file for Python programs, usable with vi.
# Tagged are:
# - functions (even inside other defs or classes)
# - classes
# - filenames
# Warns about files it cannot open.
# No warnings about duplicate tags.

import sys, re, os

tags = []    # Modified global variable!

def main():
    args = sys.argv[1:]
    for filename in args:
        treat_file(filename)
    if tags:
        fp = open('tags', 'w')
        tags.sort()
        for s in tags: fp.write(s)


expr = '^[ \t]*(def|class)[ \t]+([a-zA-Z0-9_]+)[ \t]*[:\(]'
matcher = re.compile(expr)

def treat_file(filename):
    try:
        fp = open(filename, 'r')
    except:
        sys.stderr.write('Cannot open %s\n' % filename)
        return
    base = os.path.basename(filename)
    if base[-3:] == '.py':
        base = base[:-3]
    s = base + '\t' + filename + '\t' + '1\n'
    tags.append(s)
    while 1:
        line = fp.readline()
        if not line:
            break
        m = matcher.match(line)
        if m:
            content = m.group(0)
            name = m.group(2)
            s = name + '\t' + filename + '\t/^' + content + '/\n'
            tags.append(s)

if __name__ == '__main__':
    main()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档