最近、自分のプロジェクトで ctags を使い始めました。現在、次のセットアップがあります。
root/tags [contains all non-static tags]
root/foo/tags [contains static tags for the foo directory]
root/bar/tags [static]
root/something/else/tags [etc.]
...
私はできset tags=./tags,tags,/path/to/root/tags
、すべてが完璧に機能します。
ただし、私の問題は、一度に複数のプロジェクトに取り組んでいること/path/to/root1
です。ファイルを開くたびに手動でタグを設定したくありません。編集中のファイルに基づいてタグを付ける方法はありますか? (つまり、 を編集している場合は、 ?でタグを使用します。/path/to/root2
/path/to/root3
/path/to/rootX
/path/to/root3/foo/x.c
root3/tags
私の場合、すべてのプロジェクトが共通の親ディレクトリを共有しています。私が本当に欲しいのは次のようなものです:
set tags=./tags,tags,substitute("%:p:h", "\(^\/path\/to\/.*/\).*$", "\1", "")
しかし、それを機能させるための適切なvimfuを取得できないようです。
編集:これが機能しないことに気付きました。に実際に書き込むことはできませんroot*
。代わりに、メインの ctags ファイルを に保存したいと思います。ここでは、と~/ctags/root*/tags
のサブディレクトリが 1:1 でマッピングされています [不思議に思われるかもしれませんが、これらは ClearCase UCM 動的ビューです。どちらも書き込み可能ではありません]~/ctags/
/path/to/
/view/XXX/
/view/XXX/vobs/