( This was an afterthought and is admittedly a bit ropey )
To use, type:
<ctrl-A> on the identifier you want to tag to, like ^].
<ctrl-K> takes you back.
<ctrl-W> gives you a listing of the tags stack.
Obviously you could use your own preferrences to ^A,^K and ^W.
Perhaps you would appreciate an explanation of the first macro.
mz - mark cursor position as point z
eb - put cursor on first character of word (end, beginning)
yw - yank word into unnamed buffer
o - open a line
^[ - <esc> come out of edit mode
p - put back yanked word
I:!exec vi -t ^[- insert before word :!exec vi -t
"zdd - delete line into buffer z
( buffer now contains `:!exec vi -t *identifier*' )
`z - Put cursor back to original spot z
@z - Run contents of buffer z as ex command.
As for the case insensitivity you could change the macro so that the command
line becomes
:!exec vi -t `echo *identifier* | tr "[A-Z]" "[a-z]"`
but this would only work if you had previously de-capitalized the first word on each line of your tags file. A simple shell script could could be used to
create a new lower case tags file, say lctags, and the :se tags=lctags command
in vi could be used to change the file searched when tagging.