If it's C/C++ code I use ctags and cscope and just ":tag <function-name>" to go to the function definition (VIM will autocomplete the function name).
If it's a Rails project, there's a Vim Rails plugin and then ":Econtroller <controller-name>" opens the relevant file, etc.
It's also possible to keep a file listing all of your project files (Or just edit your Makefile if you use one). Then just switch to that buffer, search ("/<blabla>") for the file and "gf" (goto-file - opens the file whose name is under the cursor).
If it's C/C++ code I use ctags and cscope and just ":tag <function-name>" to go to the function definition (VIM will autocomplete the function name).
If it's a Rails project, there's a Vim Rails plugin and then ":Econtroller <controller-name>" opens the relevant file, etc.
It's also possible to keep a file listing all of your project files (Or just edit your Makefile if you use one). Then just switch to that buffer, search ("/<blabla>") for the file and "gf" (goto-file - opens the file whose name is under the cursor).