It’s worth a mention that although it’s not all that widely known, all native text fields under OS X come with a subset of emacs key binds built-in, and this includes web page text fields in Safari, Chrome, and Firefox so if you like emacs keybinds and run OS X you’re ready to go right out of the box, no need to install anything.
If you're on Linux and running GTK-{2,3} applications, you can also have emacs key-bindings in your text entry fields (in firefox, nautilus, gmrun etc), with a small amount of work. See [1] for details.
Using the pre-defined emacs keybindings has the disadvantage that they override the normal (CUA), which is sometimes inconvenient (especially since AFAIK gtk doesn't allow you to use multiple-chord keybindings, so for example, C-x h is out). You can go around this by copying /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css to (say) ~/.themes/my-new-theme/ and /usr/share/themes/Emacs/gtk-2.0-key/gtkrc into your ~/.gtkrc-2.0 and replacing all occurrences of <ctrl> with (say) <super> or <hyper>. For gtk-3 you then also need to run
gsettings set org.gnome.desktop.interface gtk-key-theme "my-new-theme"
Thanks for sharing that! I'd never known that was the case. I do prefer vi bindings over emacs, but I can make do with these. This'll be just a little life-changing.
I've been using this for a few months. My favourite thing is that it supports `ex` commands, and if you have a cheap pedal from Deal Extreme or Alibaba or whatever, you can get your Vim toggle powers real easily. I programmed mine to emit `C-f` and did just this:
map <C-f> a
map! <C-f> <Esc>
It's not fancy, but it lets me toggle between Insert and Normal in a useful enough way.
One unfortunate thing is that being in Wasavi mode won't get your auto-save in Gmail, etc. I made that mistake once months ago and disabled it there ever since.
Unfortunately, many web apps assume the CUI bindings. Having to paste via Ctrl+V when you have remapped the paste hotkey everywhere is merely a nuisance. Not being able to use other webapp shortcuts because they are not defined in CUI but are taken in vim / emacs mode can be a show-stopper. (This is why I limited myself to remapping copy and paste only.)
> Unfortunately, many web apps assume the CUI bindings
With some going even beyond that. If i use ctrl-pgup/pgdn while browsing G+, the press will both swith tabs and bump the G+ page up or down.
And over at Youtube, hitting home will set the video back to zero if it has "focus". And i have this habit of using home to get to the top of the page after scrolling down to read comments (yep, i hate myself).
Not directly applicable, but elinks[0] allows ^T (ctrl-T (capital 'T')) while editing a textarea to launch $EDITOR. It's really nice.
Edit: in some instances, it's incredibly useful. For example it makes some cases of gmail more usable/enjoyable than via Firefox. I get all the power of vi and full access to my running system, so I can easily inline code segments or log files into my messages, and not lose editor focus if I bump the mouse, etc :P
Now I'm jokingly imagining running Emacs and "term" mode with mutt or elinks and running vi to do the editing. It sounds silly on the surface, but I think is a testament to the composability of the tools.
Edit: tested Emacs/elinks, and it works if the TERM is changed from eterm-color to vt100. Hooray for text and Unix.
Although the OP posted himself, one thing I try to explain to people who don't use Emacs very much is that instead of thinking of it as an editor with a Lisp extension language, it's better to think of it as a Lisp environment with a built in editor. And although people jokingly refer to it as an OS (and even the kitchen sink is included -- as an icon), it's really more like a shell. You have a windowing environment, you can integrate other programs including terminal shells, debuggers, etc, etc. Finally, because it is a full Lisp environment, you have 30+ years of accumulated Lisp programs that you can run (some of which have no equal on any platform).
I used Emacs for 20 years and while I've strayed away from it (got interested in Vim), I'm slowly making my way back. Not for the Emacs keybindings (which are fine), but for the entire elisp ecosystem. So in a way the OP's imaginings are not so far off (although I don't think you can actually run vim inside emacs -- you will need to use Evil mode instead ;-) ).
(go to text area, start editing, ^T, and up pops (n)vi)
I'm a long-time Emacs user as well, but have found myself on vi for last few years, initially as a refresher. There's definitely still a place in my heart for Emacs, though. I think your characterization of Emacs is also fair; I usually describe it as a Lisp VM.
Emacs can serve as a terminal multiplexer, which is the most obvious thing for Emacs to provide in that setup, though as mikekchar said, it does have a lot to offer.
I never quite got the people who run Emacs in screen/tmux; emacs can already do that!
Sort of. You can run emacs as a daemon and attach to it with emacsclient. Then when you want to detach, you just C-x C-c like usual, or disconnect and let the emacsclient process die. You have to remember to run emacs as a daemon up front, though.
You could also run emacs inside something like dtach or abduco [1], which are a "session managers" like screen or tmux but without the multiplexer.
Yes, I was referring to `emacs --daemon`/`emacsclient`.
If you run `emacsclient -a ''` then it will automatically run `emacs --daemon` for you (if it isn't already running), so that you don't need to run it up-front.
Nice, it even has a Javascript interpreter. I use w3m for various things, but the lack of Javascript makes it less than usable for a ton of stuff. The lack of configurable key-bindings also makes me sad.
I use pentadactyl with firefox which allows me to <C-i> in a text area which launches emacsclient (running in daemon mode) and sends the text back when I save. no mouse! Here is a short video of how it works: https://youtu.be/_ZoABZ8muy0 (huge gif http://imgur.com/iXMeZDj)
Perhaps I'm being too paranoid, but has this extension been externally vetted?
I'm reluctant to give access to all data I type in input boxes to a developer I'm not familiar with. While they claim it works only on textarea elements, what's stopping them from reading other input elements, including username / password fields? It seems like an awfully convenient credential collector.
Finally and extension that seems to work for me: it doesn't open external window and doesn't force me to save to make sure changes are populated back to the browser (i have easily multiple tabs with half written texts opened simultaneously). I would love for this to be available for Thunderbird as well. :wq :)
I've been using cVim for page navigation and Wasavi for editing text boxes for a while now and have been really happy with the combination. I still use an external editor for more involved edits/when I'm feeling paranoid, but Wasavi is great for just about everything else.
This is great, one thing I'd like to do is map j and k to gj and gk to make it easier to move between wrapped lines. It kind of works in Wasavi but it doesn't seem to move directly above or below the previous position.
Ooh, this is like a newer and actually working Pterosaur. I was just now struggling to get that to work (it's been unmaintained for a year, so it's probably just broken), maybe I'll try this out instead.
For one, this is on-demand and doesn't rewrite the default keybindings of the browser. It is nice for anyone else using your browser where they can ignore it entirely. It's a tradeoff and each has their benefits.
I can't live without vimperator nowadays. It's the only thing stopping me from switching to Chrome from FF (and yes, i know there are other similar vi extensions for Chrome but none seem as good as vimperator for FF).
Just tested this and Vimperator does allow vi mode in text areas if control+t is pressed. It's not as slick as wasavi but it works. There's also the option of launching an external gvim window when control+i is pressed inside a textarea, which is a cool feature for more in depth editing tasks.
See http://jblevins.org/log/kbd for further detail.