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等来跳到模块目录了。
😊 如果你喜欢这篇文章,也欢迎了解我的书: 《Python 工匠:案例、技巧与工程实践》 。它专注于编程基础素养与 Python 高级技巧的结合,是一本广受好评、适合许多人的 Python 进阶书。