Emacs Jump-Start
prelude
I created this document as a quick reference. There are many other references out there, and emacs gives you a lot of help itself, but I find this useful from time-to-time so I made it available to anyone who's interested.
basic commands
exit emacs = c-x c-c
open file : c-x c-f (for new file, enter non-existant name, for directory enter .) (to open a file via ftp see tips'n'tricks below)
save file : c-x c-s
close file : c-x k (enter name or <ret> for current)
access menu : m-` (useful for terminal mode)
conv. DOS to UNIX : C-x <ret> f unix <ret>
toggle buffers : c-x b up/down arrows <ret>
change buffer : c-mouse left click
kill buffer : c-x k
split window : c-x 2 (or c-x 3 for horizontal)
unsplit window : c-x 1
change window : c-x o (that's "o" (not zero))
change frame : c-x 5 o (as above, can use this for speedbar too)
mark (to copy/cut) : c-spc (or left-click, and drag over the text)
select all : c-c h
copy : m-w
cut : c-w
paste : c-y (yank)
cut line : c-k
undo : c-x u
backspace : DELETE (on Linux), Backspace (on win32)
delete : c-d (on Linux), DELETE (on win32)
line beginning : c-a
line end : c-e
forward a word : m-f
backward a word : m-b
buffer end : m->
buffer start : m-<
jump to start : m-c-u jumps to start of section of any kind of parethesis
search : c-s (then begin typing) c-s c-w to search THIS word, c-s <ret> for search-next
replace : m-x replace-string
search in files : m-x find-grep-dired (will ask for dir and then word to look for)
word-wrap : m-x auto-fill-mode (turns on word-wrapping)
word-wrap selected : m-x fill-region
open speedbar : m-x speedbar
execute command on buffer/file (such as in a compile) : select all, then m-| then command for example, after selecting everything on a perl script, check its syntax = m-| then type perl -cw <ret>
suspend emacs : c-z (%emacs, or fg to unsuspend from the command line)
emacs tutorial : c-h t
find command : c-h c-f
emacs info help : c-h i (for specific help, use = c-h i m emacs <ret> m TOPIC <ret>)
open shell : m-x shell
change font : SHIFT-Mouse Left Click
insert page-break : c-q c-l
compare files : menu->Tools->Compare->Two Files...
conv. to uppercase : m-x upcase-region
conv. to lowercase : m-x downcase-region
capitalize : m-x capitalize-region
sort : m-x sort-lines
sql*plus : m-x sql-mode <ret> m-x sql-oracle
write mail : c-x m (c-c c-c to send)
run calendar/diary : m-x calendar
run "dungeon" : m-x dunnet (there are other games too)
create a changelog : m-x add-change-log-entry (see changelog for info) m-x change-log-mode
evaluate elisp : c-x c-e (or c-j)
display the time : m-x display-time in the .emacs file, can put (display-time)
customizations
turn on syntax highlighting (if not already set in .emacs file) : m-x font-lock-mode (or m-x global-font-lock-mode t (for global)) or from menu, select help->options->Global Font Lock
word wrap : from menu, select help->options->Auto Fill(Word Wrap) In Text Modes (Note this only applies from that moment on) to word-wrap an entire-selected area choose m-x fill-region
emacs spell-checker : requires ispell installed
emacs web browser (w3) : requires w3 installed {http://www.cs.indiana.edu/elisp/w3/}
emacs XML(DTD) validation : requires sgmls application installed. Find more information here
emacs JDE (Java Development Environment - compiling, debugging etc.) : requires Emacs JDE, although the emacs compile option can be used (m-x compile (but this requires the filename to be typed each time))
Tips'n'tricks
to get a directory listing (from which you can open a file, or delete/rename/etc a file) : c-x c-f type directory, and then type "."
handy commands in the directory listing mode include...
# : flag all #'ed files for deletion
~ : flag all ~'ed files (backup files) for deletion
u : unflag file
x : delete all flagged files
C : copy file
d : delete file
to open a file via ftp, use : c-x c-f and /HOST:FILENAME or /USER@HOST:FILENAME c-x c-f /myname@myhost:myfile.txt
here's an example to enable a mode in a file (text must be on top) : -*- Mode = Emacs-Lisp -*-
to add an "info" file:
1. Place the info file in emacs' info directory
2. Modify the "dir" file in that directory to reflect the new file, here's an example:
* Elisp Intro : (emacs-lisp-intro). Introduction to Emacs Lisp
to view an ascii-table, use the following lisp:
(defun ascii-table (new)
"Show the buffer *Ascii Table* or make one.
Make a new one if NEW (or prefix arg) is non-nil."
(interactive "P")
(let ((buf "*Ascii Table*")
(c 0)
(header "char 8 10 16%s")
c64 c128 c192)
(if (and (not new) (get-buffer buf))
(display-buffer buf)
(with-output-to-temp-buffer buf
(message "Building ascii table...")
;;Silly spacing, but it looks better that way.
(princ (format header " "))
(princ (format header " "))
(princ (format header " "))
(princ (format header "\n"))
(while (< c 64)
(setq c64 (+ c 64)
c128 (+ c 128)
c192 (+ c 192))
(princ (format
;;Yes, it's possible to take out the remaining
;;spaces in the format string by changing the field
;;widths, but that would make it even more illegible.
"%3s%4o%4d%4x %6s%4o%4d%4x %9s%4o%4d%4x %8s%4o%4d%4x\n"
(key-description (char-to-string c)) c c c
(key-description (char-to-string c64)) c64 c64 c64
(key-description (char-to-string c128)) c128 c128 c128
(key-description (char-to-string c192)) c192 c192 c192))
(setq c (1+ c)))
(message "Building ascii table...done.")))))
examples from the command line
change colors : emacs -fg black -bg grey
run in terminal : emacs -nw
start emacs in another x-window : emacs &
favourite settings
background color : #2F4F4F (dark slate gray)
foreground color : #F5DEB3 (wheat)
font : 9x15 Regular 11
links
The FAQ for Win32 emacs : http://www.gnu.org/software/emacs/windows/ntemacs.html
Emacs Lisp Introductions : http://www.delorie.com/gnu/docs/emacs-lisp-intro/, http://www.rattlesnake.com/intro/index.html
Emergency ELisp : A great ELisp primer
Examples of .emacs files (Note some are for XEmacs) : http://www.dotemacs.de and http://www.dotemacs.de/dotfiles/AndreyAKulaga.emacs.html
Emacs Lisp Cookbook : http://www.emacswiki.org/emacs/ElispCookbook
setting up a personalised .emacs file
Note for Windows the .emacs file should be c:\.emacs
Here is my emacs configuration file as an example (;; is a comment):
;; ----------------------------
;; -- roqetman's .emacs file --
;; ----------------------------
;; background & text colors (for windows/x-windows)
(when window-system
(set-foreground-color "#F5DEB3")
(set-background-color "#2F4F4F"))
;; (set-background-color "#fffbf0")) ;ivory
;; change cursor color
(set-cursor-color "white")
;;switch off blinking cursor (for emacs 21)
(if (fboundp 'blink-cursor-mode)
(blink-cursor-mode 0))
;; set the format for the title bars
(setq frame-title-format "emacs %f")
;;set scroll to move 1 line at a time
(setq scroll-step 1)
;;enable column number display
(column-number-mode t)
;; enable horizontal scrolling
(hscroll-global-mode t)
;; show marked text in inverse video
(setq-default transient-mark-mode t)
;make the y or n suffice for a yes or no question
(fset 'yes-or-no-p 'y-or-n-p)
;; platform-specific settings
(if (eq system-type 'windows-nt)
(progn ;; windows-specific settings
;;change default font (this *is* the default on *NIX, so not required on that
;;platform)
(set-default-font "-*-9x15-normal-r-*-*-15-112-96-96-c-*-*-#33")
;; set the default printers
;; NB for postscript printers, ghostscript must be installed (you can find it at
;; ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/aladdin/gs650/gs650w32.exe)
(setq printer-name "//MYDOMAIN/HPLaserJ") ; network printer
(setq ps-lpr-command "")
(setq ps-printer-name "//MYDOMAIN/HPLaserJ") ;network printer
;(setq ps-printer-name "//MYDOMAIN/HPColorL") ;network color printer
(setq ps-lpr-switches nil)
;; set up mail defaults
(setq user-full-name "roqetman")
(setq user-mail-address "roqetman@mydomain.com")
(setq smtpmail-default-smtp-server "MYDOMAIN")
(setq smtpmail-local-domain nil)
(setq send-mail-function 'smtpmail-send-it)
(load-library "smtpmail")
;;load w3 browser (can be downloaded from
;;ftp://ftp.xemacs.org/pub/xemacs/emacs-w3/w3.tar.gz)
(setq load-path (cons "C:/Program Files/emacs-21.1/w3-4.0pre.47/lisp" load-path))
;;(require 'w3-auto)
;; enable standard display (for pasting from rich-text etc.)
(standard-display-8bit 128 159)
;; enable gnuserv, so that files can load into a single instance (can be
;; downloaded (for win32) from http://www.wyrdrune.com/index.html?gnuserv.html~main
(require 'gnuserv)
(gnuserv-start)
;; allows gnuserv to use the current frame to hold opened files
(setq gnuserv-frame (selected-frame))
;; add to path to Emacs Load Path
(setq load-path (append (list nil "c:/roqetman/lang/lisp") load-path))
;;set default directory in win32
(defun buffer-set-default-directory ( dir )
;; Sets the current directory to DIR for buffers that do not have a file name
;; associated. The function is indented for the w32 port to set the login
;; directory (~/) because on startup the default directory for *scratch* and
;; *Messages* are the emacs bin directory or the long directory name that was
;; set in the properties of a emacs icon."
"Sets the current directory to DIR for buffers that do not have a file name associated."
(save-excursion
(let (
(list (buffer-list))
)
(while list
(set-buffer (car list))
(if (eq buffer-file-name nil)
(setq default-directory dir)
)
(setq list (cdr list))
))))
(buffer-set-default-directory "c:/roqetman/")
)
(progn ;; linux-specific settings
;; add to path to Emacs Load Path
(setq load-path (append (list nil "~/emacs") load-path))
;; set local printer
(setq lpr-command "/usr/local/bin/lpr")
))
;; activate CUA-mode (gives ms-windows c-x (cut), c-c (copy) and c-v (paste)
;; functionality)
;; NB the cua.el file must be in your emacs lisp path: find it at http://www.cua.dk/
(require 'cua)
(CUA-mode t)
;; activate generic modes for additional syntax highlighting
(require 'generic-x)
;;adds "recent files" to menu. Standard on version 21. Available at
;;http://perso.wanadoo.fr/david.ponce/downloads/recentf-1.21.zip
(require 'recentf)
(recentf-mode 1)
;; add extensions to be colorized
(setq auto-mode-alist (cons '("\\.jhtml" . html-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.css" . html-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.xsl" . sgml-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.xsd" . sgml-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.ora" . sql-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.changelog" . change-log-mode) auto-mode-alist))
;; make change-log-mode auto-filled
(add-hook 'change-log-mode-hook 'turn-on-auto-fill)
;; personal elisp loads
;; roq-mode a personalized mode for colorizing ".roq" files
;; (note that roq-mode.el must be in the load path), find it at
;; http://www.roqet.org/software.html
(load "roq-mode")
;; turn on syntax highlighting
(global-font-lock-mode t)
;; show that we're done
(message "roqetman's .emacs Loaded")