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")