- XVim for XCode
- Evil for Emacs
And both do a really good job. Evil beats XVim hands down, but XVim is a lot better than the others I tried: IdeaVim (for Intellij), Vrapper (Vim for Eclipse), and Vintage (Vim for Sublime). Out of these, vintage is by far the worst. I think it does more harm than good because the missing and wrongly implemented keys confuse me so much that I get worse at vimming. IdeaVim lacked a lot of the keys that I use regularly important (vi", va", vit, vat, etc), and Vrapper was kinda good but I think I couldn't map jj to <ESC>, but it's been some time since I had to use Eclipse.
I tried to fix IdeaVim, but I browsed the source for some time and couldn't really figure out what to do. However, I also enhanced my local XVim and Evil setups a bit by extending the code and it was a lot easier than with IdeaVim.
I've said this before, but with all these implementations, somebody should have written a "libVim" in lua, that can be embedded in almost any project, and can be hooked into the input stream, and then you'd just need to define a set of methods in your delegate textfield (or what it is) and the libVim will call these methods based on input (i.e. move cursor, insert text at position, change text at position, scroll up, scroll down). I don't think you'd need that many delegate methods since mostly it is writing to a text buffer.
I think it would be better for developers to allow their programs to launch external editors. That way users can pick whichever editor they like. All the developer has to do is create a temporary file, run a command to open it, and watch for changes.
(Thanks to vimperator, I am using vim to write this.)
Once I switched to AppCode I thought I'd do the same for IdeaVim, but the code base is such an unholy affront to the gods that I gave that idea up.
Unfortunately, much like the author, my conclusion was to empty out my vimrc and start using a minimal subset that is definitely supported on all platforms. It's a real bummer, but it's definitely better than not using killer vim + IDE combinations.
I would recommend Vintageous[1] which has implemented far more bindings. Although annoyingly, it does not have :w, which I use quite often.
Does readline defaults to emacs keybindings ? It surely benefits to Emacs, but the same can be said for Vim since he reuses a regexp syntax found in sed/grep, and even apply it on navigation
`d$` : delete until EOL (aka $).
^ for BOL ..
The composability of vim commands is a beautiful thing. cw
cf"
d/\.
Cute little finger DSLAs I said these words, I realized that the truth in them is sort of startling. I love vim.
No, it's not like loving a person, but it's at least as strong an emotional connection as loving my favorite coffee mug or loving a particularly thoughtful gift from a friend.
As an aside, I often find vim verbs and commands sprinkled throughout things I write in other text editors. :wq
Another idea would be some kind of VimSpec that emulators could be run against to see how well they cover the whole range of vim actions. Again, probably not very feasible.
I ended up using this method http://technotales.wordpress.com/2007/10/03/like-slime-for-v... instead. I put just the basic functions into a plugin and that has been enough for me ever since. I use it for lisps though, not haskell.
It lacks in support for plugins and many fancy settings but provides all the movements and register operations I use regularly in full Vim.
What is important it is fully open sourced and its maintainer makes pretty good job by implementing most of issues and accepting many pull requests. It is still updated and getting constantly better.
Many thanks to Jared Parsons for developing this plugin.
I used ViEmu quite successfully a few years ago when I was doing C#, and I use vi mode on bash every day without many problems. If you keep it simple, you should be able to work across emulators pretty well.
Indeed supporting a large part of the vim commands most people use is no walk in the park. I started writing ViEmu in 2005 and I'm far from running out of oft-demanded commands and motions to implement.
Do yourself a favor and go figure out what's the difference between: cf" cF" ct" ci" ca"
Note: you can substitute c for any "verb" (d, y, ~, etc) and " for many delimeters.
:help text-objectsI also have the same problem as the op, I can't use vim plugins.
It's the same with keyboard layouts. I've been using german keyboards all my life and just decided to switch to us layout a few years ago, because basically the keyboard layout had a huge influence on programming languages, stuff like []{}/<> is way easier to type on us layout. I feared i will never be able to use a german keyboard again after switching layouts, but this is not the case. I can now use both layouts blind. The only problem are the () parentheses which are offset by one key on the german keyboard, i'll always press the wrong key for them.
One particular quirk of this 4GL was that pressing the escape key while in the editor would close the editor, do not save, do not prompt, do not pass go and collect $200. Very bad feature, especially when switching between editing in this and in Vi a dozen times a day.
In the end, everybody on the team had a bottle cap on their desk that they could put over the escape key when firing up the 4GL editor to stop accidentally hitting the damn key out of sheer muscle memory all the time.
https://github.com/apinstein/dotfiles/blob/master/vimrc#L57
Fortunately they don't really conflict with too many existing vim patterns, and it's pretty nice to be able to use the cursor/select patterns across vim and all Mac apps.
It provides real intellisense, find usages, etc. It's based on NRefactory.
The original vim alone is more than enough to satisfy my needs, and it's compatible with virtually every machine that I'll be using after all.
I can venture on plugins for more convenience, but I already have an ample satisfaction and I would rather keep it that way.
I wrote this in vim, and copied here.
I think a Chrome version is in the works, but there's nothing releasable yet.
This is why all attempts to clone Vim end up failing, and why even amazing implementations (like Evil) fall short when that ONE muscle memory you depend on is missing.
One of them is that vim is actually closer to a windows/mac style editor than emacs is. You can navigate with the arrow keys, you just need keep track of being in insert mode or not. The things that are different are sufficiently different that you won't cross them up. Back in the emacs days I was always typing ^X^S into word or typing ^S in emacs when I want to save.
BTW: one thing that helps is adding standard browser key-strokes to vim, so if I forget, it doesn't matter.
With emacs, the key bindings sort of make sense (f-orward, b-ack) (n-ext p-revious) for the right-left-down-up. Not sure why v is for page down/up, but it seems to have stuck.
Anyway, Vim has far more useful ways to move around than char-by-char. If you are curious, read `:help motion.txt`: http://vimdoc.sourceforge.net/htmldoc/motion.html#motion.txt
Since vim is mnemonic rather than ergonomic everything works great in standard Colemak - except hjkl.
V : down arrow
^ : up arrowWith emacs, you have to do so much customization before it becomes useful that you find yourself completely lost when using another installation. Try helping a friend only to find out all your commands do not work...
That can also be true for the workstation.
Example: I remapped my caps-lock key to ctrl. Swapped the top row around so the numbers and and symbols are reversed. Stuff like that.
Not even getting into customizing desktops: I use Enlightenment, the other devops guy uses what looks like a bastardized Window Maker and we'll never be at home with each other's computer.
But Sublime's vintage mode actually was the breaking point for me, and made me go whole hog back to vim. Close enough to cause problems when it fails, like faux amis in a foreign language.