为vim目录树插件NERDTree批量添加python模块书签

Type: 技术相关 - Posted at: 2011/06/27 15:39

NERDTree是VIM的一个很好用的目录树插件,它提供了一项书签的功能。

比如使用 :Bookmark xxx 可以为当前目录标记为名称为xxx的书签,之后使用 :BookmarkToRoot xxx 命令即可直接跳到该目录下。

在使用vim开发python的过程中,我们时常会碰到查看第三方模块源代码的情况。我们可以通过Bookmark命令来手动为第三方模块添加书签来方便查看源代码,但是当模块多起来的话,这样做会很麻烦。

于是我这个懒人写了一个脚本批量把python的第三方模块加入到NERDTree的Bookmark中去。

# coding: utf-8
"""                            
将python的第三方模块加入到
vim插件NERDTree的书签文件中
Author: piglei2007@gmail.com
"""
import os
import sys

Bookmarks = os.path.join(os.path.expanduser('~'), ".NERDTreeBookmarks")

def get_modules():
    """获得modules"""
    ret = set() 
    for path in sys.path:
        if not path.rstrip("/").endswith("packages"):
            continue
        
        packages = [ x.split("-")[0] for x in os.listdir(path) if os.path.isdir(os.path.join(path, x)) ]
        ret.update(packages)
    return ret

def main(): 
    modules = get_modules()
    f = open(Bookmarks, "a+")
    # 已经存在的书签不做处理
    existed = set([ x.split()[0] for x in f.readlines() if x.strip() ])
    for module in sorted(modules - existed):
        try:
            m = __import__(module)
            root = os.path.dirname(m.__file__)
        except:
            continue 
        print "Writing...", module
        print >>f, module, root

if __name__ == "__main__":
    main()

之后便可以方便的使用:BookmarkToRoot django:BookmarkToRoot tornado:BookmarkToRoot zope等来跳到模块目录了。

<
>
1# Chang.Jian   said this at 2011-06-28 13:05 : [Quote]
最近用的还不习惯
2# Python.cn(news, jobs)   said this at 2011-06-30 05:43 : [Quote]
小猪太变态了,居然用负数和验证码……
文章转到这里了:http://simple-is-better.com/news/492
Name:  *   Remember me
E-mail:  *  Not public, supported by Gravator
Website:      Not required
Question:
0 * 7 = *
Content: