Remember the Lex
tool that we used in college days?

Ever wondered who wrote it? It was Eric
, along with Mike

That’s right, the CEO of Google.

I can imagine the CTO of a company to have such a background,
but I never would have expected the CEO.

But then again, it’s Google. They can do anything.

Being a fan of Steve Yegge, I was
randomly reading some of his older writings and eventually chanced
upon his post on “Effective
. Being
a Vim guy, I wondered whether some of the tips he presents are useful
for the Vim world as well.

Note: This is not a Vim vs Emacs thing, it is simply a porting of
tips for Emacs to see whether the tips are useful for Vim users as

So here goes:

10 Specific Ways to Improve Your Productivity With Emacs, ported to Vim:

Item 1: Swap Caps-Lock and Control

This is a desktop-specific customization. However, I don’t think it is
required for Vim users, but it can be

Update: After using for a couple of days, I’m really starting to like this!

Item 2: Invoke M-x without the Alt key

Not relevant for Vim. Not a good start, first two tips are out…

Item 3: Prefer backward-kill-word over Backspace

This is a good tip. Normally, I would use bdw to achieve the same.
To map backspace to this command in normal mode, put this in
your vimrc: :map <bs> bdw.

To make it work in insert mode you can put :imap <bs> <esc>bdwa. I’m
sure there’s a better way to use just one command to do this, please
leave a comment if you know of a better way.

Update: You can also use ctrl-w in insert mode (see :help i_CTRL-W),
thanks to pimaniac.

Item 4: Use incremental search for Navigation

Use :set incsearch.
Press n to search forward and N to search backward.

Item 5: Use Temp Buffers

Run :new to get a new buffer (or alternately ctrl-w n).
To switch between buffers, use ctrl-w ctrl-w (yes, twice).
Use :q as usual to close the buffer (or alternately, ctrl-w q).

Item 6: Master the buffer and window commands

  • To split window vertically, run :vsp
  • To split window horizontally, run :sp
  • To make all visible windows approximately equal height, run ctrl-w =
  • To switch to other window, run ctrl-w ctrl-w or use the
    directional keys ctrl-w h/j/k/l
  • To delete other windows, use ctrl-w o or run :only
  • To list-buffers, run :ls (or even :files or :buffers)
  • Dialog Boxes: The Root of All Evil – agree, Vim doesn’t need dialog
    boxes as well (at least in the non-gui mode)
  • Buffers to the Rescue – Same thing for Vim, I think.

Item 7: Lose the UI

  • Remove the menubar using :set guioptions-=m.
  • Remove the toolbar using :set guioptions-=T.
  • Similar options exist for the scrollbar, see :help guioptions
  • Region selection can be easier in Vim using the visual mode, just
    press v, use the normal keys to move around, such as 10j to move
    down by 10 lines, and then a command to work on that visual
    selection, such as d to delete it.

Item 8: Learn the most important help functions

The help in Vim is vast, see :help usr_toc to see the chapters of
the awesome reference manual.

Item 9: Master Emacs’s regular expressions

I agree, Friedl’s book is the authority on this. However, there are
some good introductions to Vim regular

Item 10: Master the fine-grained text manipulation commands

  • Creating macros are easy in Vim. Press qa to start recording
    a macro called ‘a’, do all the commands you want to run, pres q to
    stop recording. Then, run @a to repeat the recorded commands i.e.
    a macro.
  • Swapping two adjacent words, yeah, this can be better. I use xp to
    swap characters and dwwP to swap words, but it doesn’t do fancy
    stuff like the transpose-* functions. This can be an interesting
    plugin to write.

Tune in next time…

  1. Filling paragraphs can be done by setting :set textwidth=80 and
    running gqap command to format ‘a’ ‘p’aragraph, or like me you
    can map the ‘Q’ key to run it : :nmap Q gwap. To make this work
    inside comments, make sure you :set formatoptions+=c.
  2. gnuserv : I use It’s All
  3. Dired : There are plugins available with
  4. Whitespace manipulation – plenty of ways such as :set expandtab,
    :retab!, :help fo-table, etc.
  5. nxml-mode : I haven’t used nxml-mode but I’m still looking for
    something like Emacs’ SGML-mode that works for Vim. I miss you,
  6. picture-mode : Dr. Chip to the rescue with
  7. minibuffer management : Not sure what this is.
  8. effortless navigation : I think Vim has enough keys for this by
    default. See :help navigation.
  9. region management : We can always choose the color scheme of choice
    for the highlighted region, or change it ourselves, see `:help

  10. rectangle commands : Use ctrl-v
  11. emacs shells : We have :sh but don’t know if Emacs does
    something more
  12. align-regexp : Not sure what this is.
  13. frame initialization : I set Vim to always opens in full screen,
    see :help win16-maximized. Not sure how to do it in Linux yet,
    but in Gnome, I just press Alt-F10.
  14. using the goal column : No idea…
  15. setting the fill column : Nada…
  16. OS settings and font : I like to customize Vim’s font and keep
    trying different
    , currently
    I’m using :set guifont=Consolas:h14:cANSI
  17. browsing and editing archives : I think Vim does this by default,
    see :help netrw.
  18. advanced keybinding : see :help :map and :help keycodes
  19. mastering the kill ring : I guess you can simulate this with
    :echo @a, etc.
  20. mastering Info : Not sure if this would be useful in Vim.
  21. using M-x customize : Not sure what this does.
  22. utility apps : It’s all in the plugins.

Summary: Porting good ideas is a good idea :)

I wonder why a search for Steve Yegge on Wikipedia points to

Update in November end, 2008: I have released a new book on Vim, read the whole thing right here..

Note: I no longer work with IonLab since Nov 12 of 2009.

First, there was the Mint financial newspaper’s article on
“casualpreneurs” in the July 8th, 2007 edition which featured
ion. FYI, Mint is a joint collaboration
between the Hindustan Times and the Wall Street Journal.

Then, there was an article in the BTW magazine’s 10th September 2007
edition on “netpreneurs” which featured ion.

And yesterday, there was a huge half-page article on ion in the
Economic Times
! (Bangalore

I can’t help but think on how much hair-pulling, teeth-gnashing and
forehead-slapping happens behind the scenes. But to see all the
response from
customers as
well as an article in the Economic Times dedicated exclusively to us
just six months after launch
makes it seem all worthwhile.

So, thank you to all our dear customers for making ion so successful!
And some of you actually like it so much that you spread the word
around for us! :)

P.S. Yeah, we know we don’t look great in that big photo, but hey, our
excuse is that we were too busy working on ion ;)