These are honestly the two biggest criticisms I hear about Vim; and, if they're features you really do use often, I don't really have any good response in store.
Regarding refactoring; I don't really miss it at all. For renaming, I simply use vim-ack and find where a rename would need to take place. In most cases (for the projects I work on) we're talking about the difference of maybe 30-45 seconds.
Intellisense is cool; there's no doubt about it and there's not really anything that comes close in Vim (omnicompletion really does pale in comparison). That said, the only type of projects that I've ever felt I really used Intellisense were sprawling Java applications. I've never missed it while working on JavaScript or Ruby projects (and, anecdotally, I've heard many C and Python developers also talk about not needing this feature).
Ultimately, Vim benefits me with overall productivity (for example, it takes Vim an order of magnitude less time to start up than Eclipse on my Macbook Pro--and then proceeds to lock up every few minutes while it does GC or whatever the hell else it does to just randomly stop from time-to-time). While I'm in the mode of writing and editing code, it's also significantly faster and easier on my hands and arms to be totally keyboard focused.
All that said, it's a really text-centric form of programming that is somewhat different from the hand-holding (not meant as derogatory; just a statement of fact) and all-in-one approach that an IDE can give you. There are some contexts (Java) that just aren't well suited to editing in Vim (but they're probably not suited for Sublime or TextMate either, honestly).
>That said, the only type of projects that I've ever felt I really used Intellisense were sprawling Java applications.
Exactly. I've recently been using omnicompletion with Go (gocode) and while it's neat, it is not essential as completion is when writing Java/C#/ActionScript. I believe it has to do with the former language's reliance on multiple-inheritance as opposed to Go's duck typing. With multiple-inheritance one seems "farther" away from atomic data structures; to understand the objects one must learn an entire tree of taxonomy.
Personally I find Go's approach refreshing; with one page of documentation one can "see" how an entire collection of types (structs) relate. Here's an example: http://golang.org/pkg/database/sql/
>Ultimately, Vim benefits me with overall productivity
...and it's not just coding where vim increases productivity. I can't count the number nights I've spent writing essays or final papers in college with nothing more than vim, ispell, and the book I'm reporting on. When editing text becomes reflexive it is so much easier to express oneself.
I spend all day in vim writing python, and I've got to agree that refactoring and completion are two of vim's weakest points(I have heard that ropevim is pretty good but I never got into it).
I've had very poor luck getting omnicompletion to work to my satisfaction, but one thing that works very well for me is opening buffers for several files related to what I'm working on and just using <C-n> / <C-p> for basic completion. I always have a bpython console open to test bits of code and make sure I'm calling functions correctly. The one thing that I miss is being able to complete a function name and have a small window pop up with its arguments and documentation. I've tried writing some simple plugins for this but have never managed more than a hack of a solution.
My system works incredibly well for me and I wouldn't use anything else, but many of my coworkers use totally different methods and I don't blame them.
Regarding refactoring; I don't really miss it at all. For renaming, I simply use vim-ack and find where a rename would need to take place. In most cases (for the projects I work on) we're talking about the difference of maybe 30-45 seconds.
Intellisense is cool; there's no doubt about it and there's not really anything that comes close in Vim (omnicompletion really does pale in comparison). That said, the only type of projects that I've ever felt I really used Intellisense were sprawling Java applications. I've never missed it while working on JavaScript or Ruby projects (and, anecdotally, I've heard many C and Python developers also talk about not needing this feature).
Ultimately, Vim benefits me with overall productivity (for example, it takes Vim an order of magnitude less time to start up than Eclipse on my Macbook Pro--and then proceeds to lock up every few minutes while it does GC or whatever the hell else it does to just randomly stop from time-to-time). While I'm in the mode of writing and editing code, it's also significantly faster and easier on my hands and arms to be totally keyboard focused.
All that said, it's a really text-centric form of programming that is somewhat different from the hand-holding (not meant as derogatory; just a statement of fact) and all-in-one approach that an IDE can give you. There are some contexts (Java) that just aren't well suited to editing in Vim (but they're probably not suited for Sublime or TextMate either, honestly).