Vim is my favorite editor, when I open a php or python file in vim, the first command is:
set tags=../../../tags
or
set tags=../../tags
I think vim can do this automatically:
first search ./tags, if it is exists, set it, if not exists
search ../tags,if it is exists, set it, if not exists
search ../../tags,if it is exists, set it, if not exists
until it reaches the / or D: directory
However, I am not so familiar with the vim scripts. Any of your help will be appreciated!_
There are a few comments on this particular subject on this question.
Basically, this is supposed to work:
set tags=./tags;/
It starts with a tags file in the current directory and goes up to the root directory.
Type :help tags-option
for more details.