初学python,找个有用的来练手。选定了一个我早就想做的让vim按需生成tags跳转文件的小程序。
vim的tags用于跳转的好处自是不用多说,但是如何生成tags确实困扰我的一大问题,用VS的都知道,VS会为每个解决方案生成一个ncb文件用于自动提示,相当于tags的功能,这个ncb文件很智能,它会根据你所包含的头文件来自动处理。这样,你只需包含一个头文件,就可以出现该头文件相关的自动提示了。
但是vim就没有像VS这么智能了,目前我的做法就是在某个目录下调用ctags,然后加上递归参数,这样的缺点就是会生成一个很大的tags文件,里面很多都是项目根本没用到的头文件的tags。为了改善这种情况,需要有一个按所用到的头文件来生成tags的方法,让ctags按需生成tags。
ctags本身是支持从一个文件中读入需要生成tags的文件列表的,因此剩下的问题就是如何找到项目所用到的所有相关的C++文件,然后让ctags从这些文件中生成tags。这就是我拿来练手的小程序了。
python的好处就是不用像C++那样考虑那么多不相关的细节,专注于你想做的。代码如下,应该还算精简吧。有更好的方法不妨评论分享下,:)
# -*- coding: utf8 -*-
# by absolute8511 2010-12-04
import os,sys
from os import path
import string,re
#在系统头文件目录下查找系统头文件,可以自行添加头文件路径
def findsysinclude(filename,includepath):
if filename=