I used to use a combination of tabs and multiple gvim instances, keeping groups of related files as tabs in each instance. So long as I didn’t end up with too many tabs in one instance, the tab bar shows you the name of each file you’re editing at a glance.
Then I read a post by Jamis Buck on how he switched from TextMate back to vim, and learned some great tricks:
- Ctrl+w s and Ctrl+w v to split the current window
- Ctrl+6 to switch back and forth between two buffers in the same window.
- the awesome fuzzyfinder.vim which gives you auto-completing search of files in your current directory or of buffers you currently have open
- Jamis’ own fuzzy_file_finder and fuzzyfinder_textmate, which slightly modify how
fuzzyfinderworks to behave more like a similar feature inTextMate(as far as I can tell, the difference is that it matches anywhere in the filename instead of only from the start). Watch this video to see it in action.
Now I just have one gvim instance, maximised, and split it into multiple windows so I can see several files at once. I bound Ctrl+F to fuzzyfinder\_textmate, so now if I type (say) Ctrl+F mod/usob it opens up app/models/user\_observer.rb. I almost never bother with tabs any more.
Update 2010/08/07
While fuzzyfinder\_textmate remains awesome, as Casey points out in the comments, it’s no longer maintained. Also, it (and/or fuzzyfinder.vim) gets a bit slow and unstable when working with large projects (lots of directories or files), so I’ve been looking for an alternative.
Fortunately, there seems to be a very nice alternative in the form of Wincent Colaiuta’s Command-T plugin. This has very similar (if not slightly better) behaviour to fuzzyfinder\_textmate, but is noticeably faster; it also has nice features like being able to open the found file in a split or vertical split. Thanks (and upvotes!) to David Rivers for pointing to it.