2011年6月1日水曜日

pythonでタグジャンプを使う

VIMでPythonをいじってるとき、タグジャンプできたらいいなと思い、検索してみたら
ctagでPython用のタグ生成できる事を知った。

やりかたはいたって簡単

 :!ctags *.py

これだけで生成できる。しかし、これだけだと同一フォルダ内のソースしかジャンプできない。

サブフォルダにもジャンプしたいよって事で、

 :!crags -R ..

こうすることで一階層下からサブフォルダにアクセスできるようになるが、
プログラム中の「from ~import」命令分にもタグが貼られてうまくジャンプできないケースがあって
思ってるようないい結果にはならない。。

ということでpython\tools\Scripts\ptags.pyを少しいじって
再帰検索に対応したタグジャンプ作成モジュールを使うことにした。

使い方:
 python ptags.py [カレントディレクトリ]

例:
 python ptags.py ../


コメント部分がオリジナルでコメント下に書いた文が追加箇所。
def main():
 #args = sys.argv[1:]
 #for filename in args:
 #    treat_file(filename)
 #>>> 追加:再帰表現に対応 >>>
 xdir = os.walk(sys.argv[1])
 for xpath, dirs, files in xdir:
  for xfile in files:
   fname, ext = os.path.splitext(xfile)
   if '.py' == ext:
    filename = os.path.join(xpath, xfile)
    treat_file(filename)
 #<<< 追加:ここまで <<<

 if tags:
  fp = open('tags', 'w')
  tags.sort()
  for s in tags: fp.write(s)
 
 
これでC言語のタグジャンプと同じ動きになる。

オマケ
 vimrcの設定でCTRL+Eキーでタグファイル生成するマクロ。 ptagsのディレクトリ位置や、カレントディレクトリの設定は環境に合わせる必要あり。

  nnoremap :!python d:\TracLight\python\Tools\Scripts\ptags.py ../

参考URL :

 http://d.hatena.ne.jp/t2y-1979/20080904/1220458000
コメントを投稿

Androider