> They live in their own space, you don't (often) pipe stuff in or out of it.
Well that's not true at least for vim.
: read !FOO
will run the FOO command and read the results back into the current buffer. I usually search my codebase by reading the results of a grep into a temporary buffer and 'gf'ing to the appropriate file
As a Vim user who uses Emacs for note taking, I can guarantee Evil mode does far better at emulating Vim than you give credit for. In fact, the example you provided works just as well with Evil. The only built-in editing command which I notice missing from Vim is reliable undo/redo, which is sadly a fundamental Emacs limitation and a deal breaker. Apart from that, it's remarkably well-made.
My understanding is that it's still not as good as Vim's builtin undo though. Vim has a persistent undo tree that consistently works and doesn't confuse users. AFAIK the best attempt at it in Emacs is the undotree package, but it unfortunately has a reputation of being unreliable.
I've made no statement about emacs or evil mode. I was just correcting the user I was responding to about vim having interoperability with the rest of unix
But that goes back to the original point they made, everything outside of the actual text editing and you're in EMACS land with all of it's controls. Even with something as complete as spacemacs, the default landing page when you open it has different key bindings.
> I usually search my codebase by reading the results of a grep into a temporary buffer and 'gf'ing to the appropriate file
I used to do that too, I now use the Ack plugin which is almost instantaneous on a codebase that grep used to take 2s-3s long to search. The speed isn't what matters though, it's the fact that Ack only searches source code, not all files so my results is less polluted with irrelevant matches.
Well that's not true at least for vim.
: read !FOO
will run the FOO command and read the results back into the current buffer. I usually search my codebase by reading the results of a grep into a temporary buffer and 'gf'ing to the appropriate file