emacs for vi users

I created this page for those C programmers who, like me, are being forced to learn how to use the emacs editor after years of using the Unix standard vi editor. I will focus on how to do common things that you do when coding in C with the vi editor. Note that while there may be more than one way to do something, and sometimes an easier way to do something, the information I provide is more often a straight forward translation of how you would do things in vi in terms of how you would do the same thing using the emacs editor. Also what is here is the bare minimum to get you started. Unlike in vi, in emacs you don't have to enter a "insert" mode to add text -- what you type appears immediately on screen.

If you are a vi fan and have been experimenting with vi clones (vim, nvi and the rest), then you need to check out the VIPER package in emacs. Written by Michael Kifer, it's cool, like vi on steroids.


Action Vi Emacs
open file :e Ctrl - x Ctrl - f
save file :w Ctrl - x Ctrl - s
quit editor :q Ctrl - x Ctrl - c

Move Cursor

Action Vi Emacs
left h Ctrl - b
down j Ctrl - n
up k Ctrl - p
right l Ctrl - f
back one word b Esc - b
foward one word w Esc - f
beginning of line ^ Ctrl - a
end of line $ Ctrl - e
page up Ctrl - b Esc - v
page down Ctrl - f Ctrl - v
jump to line number 'n' nG Esc - x goto-line RET n

Delete Text

Action Vi Emacs
delete char x Ctrl - d
delete word dw Esc - d
delete line dd Ctrl - k Ctrl - k
delete 'n' lines ndd Esc - n Ctrl - k


Action Vi Emacs
undo u Ctrl - x u


Action Vi Emacs
yank 'n' lines nyy Ctrl - SPACE, move cursor upto the first character of the line next to last line you want to yank, Esc - w
place (emacs calls this yank -- yank from the copy buffer) p or P Ctrl - y

Match Parenthesis

Action Vi Emacs
match paranthesis % This is one vi feature I am addicted to and which made the change to emacs tough because emacs does not have a direct way to do this even under it's various programming modes. Below is some emacs lisp code that I picked off from the Internet that will map the % key to do exactly what vi does. A big thanks to whoever wrote this. (Thanks to Eric Pement (Sed FAQ) for pointing out that this is from the Emacs FAQ). What you need to do is open the file .emacs under your home directory and stick the following lines as is in the file. Close and re-open emacs and, presto, you can use the % like you do in vi. Note that I have not tested this extensively, but it seems to work.
  (global-set-key "%" 'match-paren)
    (defun match-paren (arg)
      "Go to the matching paren if on a paren; otherwise insert %."
      (interactive "p")
      (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
            ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
            (t (self-insert-command (or arg 1)))))


Action Vi Emacs
search forward / Ctrl - s (text incremental search)
search backward ? Ctrl - r (text incremental search)

Books & References

Emacs Web-Site
Emacs Manual
Emacs Lisp Introduction
Emacs Lisp Manual
GNU Emacs Pocket Reference, Authors: Debra Cameron, Pub: O'Reilly
Learning GNU Emacs, Author: Debra Cameron, Bill Rosenblatt & Eric Raymond, Pub: O'Reilly
GNU Emacs Manual, Author: Richard Stallman, Pub: Free Software Foundation


RET: Many commands in emacs bring up a prompt line at the bottom of the editor screen (like the ":" command line at the bottom of the vi editor) where you need to provide additional information after which you press the Enter/Return key to cause the command to act.
Esc: Unlike the Alt/Ctrl/Meta/Shift key combinations, Esc key combinations require that you press and release the Esc key before you press the next key. On Unix workstations, you may be able to use the Meta key instead of the Esc key (in which case, you would keep the Meta key pressed when pressing the next key in the key combination).

On NTEmacs (GNU Emacs compiled for Windows 9x/ME/NT/XP/2K) you can use the ALT key for Esc key combinations (keeping the ALT key pressed when keying in the next key in the combination).

Emacs Lisp: Emacs is extremely powerful because it can be customised to behave any way you want it to. Emacs Lisp is the programming language that you use to customise emacs.

Emacs-Ring - Site Number 6
[ Next Site | Skip next Site | Previous Site | Skip Previous site | List Sites | Home ]


grok2.gif (391 bytes) The latest version of this site has moved to it's own domain at http://www.grok2.com/. Please update your bookmarks and links. Click here to go to the new site.



The latest version of this site has moved to it's own domain at http://www.grok2.com/. Please update your bookmarks and links. Click here to go to the new site.

Other Stuff On This Site

Emacs for Vi Programmers
Installing Linux on Sony's Vaio PCG-Z505LE Laptop
Studying in New Zealand (July 2001 info)
Utilities for Programmers
Why is programming fun?
Mirror of Eric Pement's Sed FAQ
C Programming Language Links (Work in Progress)
Source Code Comprehension Tools
Structure packing with the GNU C compiler
Walt Disney World Photographs
Tcl/Tk GUI Application Rules


Tell me what you think!