What I (and I believe most vim users) like about vim is not the software itself, but the concept and ideas behind it: the modal editing, the movement commands, the composability of them, etc.
But the truth is that Emacs is, for lots of usages, better software. It's more extendable, has more features, it's even better written.
So using Emacs with a vim-friendly UX seems like a great idea.
I switched to Evil and Emacs last year.
The combination of Vim and Emacs is a much better Vim.
org-mode is life changing.
In general I've found that the plugins in the Emacs environment make more sense and simply work better then Vim equivalents.
But for a less selfish reason, our team usually does pair programming and we often pair program, each with our own computer connected through a shared tmux session. Because most people on the team prefer Vim, we have standardized on that which is really hard for new people on the team who have no experience with modal editors. Having a compromise where both people can use the same editor without forcing people to one paradigm or the other would be fantastic.
Having said that, I tried out Evil mode a few years ago and it fell pretty widely from the mark for an advanced vi user (not just Vim). It had basic support, but if you did any of the complicated stuff that makes vi efficient, it didn't really work. Some people in this thread are saying that this has improved substantially so I'm really looking forward to trying it.
That said, vim with neobundle, unite, fireplace, rainbow parens, vim-sexp, vim-repeat, vim-surround, and one of the many tmux integrations makes for a good enough clojure dev experience.
If you want Unite equivalent, check Helm which is created before Unite and is still actively maintained. See one of Helm package demo: http://tuhdo.github.io/helm-projectile.html. The same for rainbow-parentheses. Actually, Emacs got something better than rainbow-parentheses for visual aiding parentheses: https://github.com/syl20bnr/spacemacs/issues/1173
For proper sexp manipulation, check this guide with great animations: http://danmidwood.com/content/2014/11/21/animated-paredit.ht...
For Clojure, in Emacs you got a debugger than can step expression by expression: http://endlessparentheses.com/cider-debug-a-visual-interacti...
If you want to know features for Clojure that already configured in Spacemacs, check its Clojure documentation: https://github.com/syl20bnr/spacemacs/tree/master/contrib/la...
You got all IDE features like refactoring and jump to symbols
More demos:
Here are some nice features that Emacs and its 3rd packages provide:
- Powerful automatic indentation with aggressive-indent: https://github.com/Malabarba/aggressive-indent-mode(scroll down for demos). It does not only indent the current line, but the whole semantic context around your cursor.
- Live grep:http://tuhdo.github.io/static/live_grep.gif
- C/C++ refactoring with built-in parser: https://github.com/tuhdo/semantic-refactor/blob/master/srefa...
- Lisp Code reformatting: https://github.com/tuhdo/semantic-refactor/blob/master/srefa...). As far as I know, there's none Lisp code reformatting outside of Emacs.
- Access to a list of project with a few key strokes: http://tuhdo.github.io/static/helm-projectile/helm-projectil...
- Quickly access any file in your project, as large as Linux kernel, instantly, regardless of where you are in the project, and within a few keystrokes: http://tuhdo.github.io/static/helm-projectile/helm-projectil...)
- Jump to any file depends on context, even if the file path is in a plain ASCII text file: http://tuhdo.github.io/static/helm-projectile/helm-projectil...
- Copy files from anywhere to anywhere: http://tuhdo.github.io/static/helm-projectile/helm-projectil...)
- Delete files anywhere; files are always at your finger tip to do whatever with them: http://tuhdo.github.io/static/helm-projectile/helm-projectil...
- Switch between other files with same names but different extensions: http://tuhdo.github.io/static/helm-projectile/helm-projectil...). Work not only for C/C++ but other languages, and is customizable. You don't have to configure anything, like adding include paths for the command to search. Everything is automatic. Just use it as it is.
- Jump to tag definition, from its own parser or external parser like GNu Global: http://tuhdo.github.io/static/c-ide/helm-gtags-jump-dwim.gif
- Jump up to parent: http://tuhdo.github.io/static/c-ide/senator-go-to-up-referen...
- Do you like outline tree?: http://tuhdo.github.io/static/c-ide/sr-speedbar.gif
- Interactive outline tree: http://tuhdo.github.io/static/c-ide/helm-semantic-or-imenu-w...
- Easily move back and forth using the interactive outline tree: http://tuhdo.github.io/static/part3/helm-semantic-or-imenu-2...
- References retrieved from its Emacs internal parser: http://tuhdo.github.io/static/c-ide/semantic-symref.gif
- Beautiful compile output: http://tuhdo.github.io/static/c-ide/compilation-compile.gif
- Frontend support for GDB: http://tuhdo.github.io/static/c-ide/gdb-many-windows.gif
- Code completion: http://tuhdo.github.io/static/c-ide/semantic-boost-demo.gif
- Open man page for symbol at cursor: http://tuhdo.github.io/static/part3/helm-man-woman.gif
- Emacs open 39MB C file: http://tuhdo.github.io/static/performance.gif
- Emac opens multi-gigabtye file: http://www.emacswiki.org/emacs/VLF
Note that in the demos you may see me type in the commands. You can think of it like the start menu in Windows, but actually those commands can be executed quickly with a shortcut. I type in the commands for demonstration purpose to Emacs users.
Those demos are just tip of the iceberg.
I actually switched to Spacemacs, for largely the reasons you mentioned (everything is there, but easier to extend and largely better).
I was merely pointing out that vim with some plugins is good enough to get serious work done in Clojure, even though getting access to real refactoring libraries, a debugger, etc in my editor would be welcome.
The one problem I have with Emacs is that vim-sexp is and was much much much much better than paredit. Treating forms as text objects and letting you use regular vim motions to select text objects before slurping/barfing/etc is a move forward. It wasn't exactly obvious to me how to duplicate this with Spacemacs/VIM, but I also had work to do so I just went with the Spacemacs paredit bindings.
So, could you be more specific about how vim-sexp works? If you want to visual select sexp from symbol and expanding outward, uses expand-region: https://github.com/magnars/expand-region.el. Same for string. Then you can use smartparens: https://github.com/Fuco1/smartparens to wrap around by simply pressing "(". It is all in Spacemacs now, and you can explore further with evil-lisp-state commands, bound to ", k".
https://github.com/guns/vim-sexp
This is actually an open problem in evil/emacs at the moment.
Would be nice to sort out.