I feel like I often name files in such a way that my computer constantly beeps while I program because the tab completion is ambiguous. Before doing a lot of Unix programming, I tended to name related files with the same prefix to indicate their relation. Now I must re-think my approach to folder and file structures and names to program more effectively.
What heuristics or rules do you apply when programming to simplify tab completion? Do you use any tools to make tab completion smoother (e.g., emacs icicles)?
EDIT: Wow, thanks for the fantastic insights. I think every possible weakspot of mine was accounted for in the answers. I accepted the one that seems like the best productivity improvement, although they’re all worth reading.
I’ve generally worked on projects where related files are all in the same directory, and the file names themselves are specialized to indicate their contents.
Of course, this begs the question, why are you doing tab completion on file names? If you’re perusing source code, there are TAGS, CEDET, and a plethora of other utilities that will let you bypass the file name and jump directly the the function/variable you’re really after.
It all depends on what you’re really trying to do, and finding a particular file is usually the means to a different end.