Emacs Commands

Control Meta Alt Esc

Basics
C-x C-f "find" file i.e. open/create a file in buffer
C-x C-s save the file
C-x C-w write the text to an alternate name
C-x C-v find alternate file
C-x i   insert file at cursor position
C-x b   create/switch buffers
C-x C-b show buffer list
C-x k   kill buffer
C-z     suspend emacs
C-x C-c close down emacs


Moving
C-f    forward char
C-b    backward char
C-p    previous line
C-n    next line
M-f    forward one word
M-b    backward one word
C-a    beginning of line
C-e    end of line
C-v    one page up
M-v    scroll down one page
M-<    beginning of text
M->    end of text


Editing
M-n    repeat command n times
C-u    repeat command 4 times
C-u n  repeat n times
C-d    delete a char
M-d    delete word
M-Del  delete word backwards
C-k    kill line

C-spc  Set mark for region
C-w    kill marked region
M-w    copy marked region
C-y    paste copied/killed text
M-y    yank earlier text (cycle the kill buffer)
C-x C-x exchange cursor and mark
C-x h  select all (the whole buffer)
M-h    make region current paragraph

C-t    transpose two chars
M-t    transpose two words
C-x C-t transpose lines
M-u    uppercase letters from point to end
M-c    first letter uppercase
M-l    opposite to M-u


Various
C-g    quit current action
C-x u  undo previous action

C-x /  undo previous action
M-x revert-buffer undo changes since last save
M-x recover-file recover text from autosaved file
M-x recover-session if editing several files


Help
C-h c  describe command
C-h k  describe command action
C-h l  show last 100 keys pressed
C-h w  describe key-combo
C-h f  describe function
C-h v  describe variable
C-h b  desplay key commands buffer
C-h t  emacs tutorial
C-h i  info reader
C-h C-k info reader and search key-combo
C-h F  show emacs FAQ
C-h p  show Elisp info 


Search/Replace
C-s    search forward
C-r    search backward
C-g    return to start point
M-%    query replace


Space or y replace this occurence
Del or n don't replace
.      only replace this and exit (replace)
,      replace and pause (resume with Space or y)
!      replace all following occurences
^      back to previous match
RETURN or q quit replace


Search/Replace RegEx
Characters to use in regular expressions:
^      beginning of line
$      end of line
.      single char
.*     group or null of chars
\<  beginning of a word
\>  end of a word
[]     every char inside the backets (for example [a-z] means every small letter)

M C-s RETURN search for regular expression forward
M C-r RETURN search for regular expression backward
M C-s  incremental search
C-s    repeat incremental search
M C-r  incremental search backwards
C-r    repeat backwards
M-x query-replace-regexp search and replace


Window
C-x 2  split window vertically
C-x o  change to other window
C-x 0  delete window
C-x 1  close all windows except the one the cursors in
C-x ^  enlarge window
M-x shrink-window command says it ;-)
M C-v  scroll other window
C-x 4 f find file in other window
C-x 4 o change to other window
C-x 4 0 kill buffer and window
C-x 5 2 make new frame
C-x 5 f find file in other frame
C-x 5 o change to other frame
C-x 5 0 close this frame


Bookmarks
C-x r m set a bookmark at current cursor pos
C-x r b jump to bookmark
M-x bookmark-rename says it
M-x bookmark-delete "
M-x bookmark-save "
C-x r l list bookmarks


d      mark bookmark for deletion
r      rename bookmark
s      save all listed bookmarks
f      show bookmark the cursor is over
m      mark bookmarks to be shown in multiple window
v      show marked bookmarks (or the one the cursor is over)
t      toggle listing of the corresponding paths
"        path to this file
x      delete marked bookmarks
Del ?
q      quit bookmark list

M-x bookmark-write write all bookmarks in given file
M-x bookmark-load load bookmark from given file


Shell
M-x shell starts shell modus
C-c C-c same as C-c under unix (stop running job)
C-d delete char forward
C-c C-d Send EOF
C-c C-z suspend job (C-z under unix)
M-p    show previous commands


Dired
C-x d  start up dired
(large C) copy
d      mark for erase
D      delete right away
e or f open file or directory
g      reread directory structure from file
G      change group permissions (chgrp)
k      delete line from listing on screen (don't actually delete)
m      mark with *
n      move to next line
o      open file in other window and go there
C-o    open file in other window but don't change there
P      print file
q      quit dired
Q      do query-replace in marked files
R      rename file
u      remove mark
v      view file content
x      delete files marked with D
z      compress file
M-Del  remove all marks (whatever kind)
~      mark backup files (name~ files) for deletion
#      mark auto-save files (#name#) for deletion
*/     mark directory with * (C-u * removes that mark again)
=      compare this file with marked file
M-=    compare this file with it's backup file
!      apply shell command to this file
M-}    change to the next file marked with * od D
M-{ "    previous "
% d    mark files described through regular expression for deletion
% m "   (with *)
+      create directory
>   changed to next dir
<   change to previous dir
s      toggle between sorting by name or date
M-x speedbar starts up a separate window with a directory view


Telnet
M-x telnet starts up telnet-modus
C-d    either delete char or send EOF
C-c C-c stop running job (similar to C-c under unix)
C-c C-d send EOF
C-c C-o clear output of last command
C-c C-z suspend execution of command
C-c C-u kill line backwards
M-p    recall previous command


Text
M-s    center line
M-S    center paragraph
M-x    center-region name says


Macros
C-x (  start macro definition
C-x )  end of macro definition
C-x e  execute last definied macro
M-n C-x e execute last defined macro n times
M-x name-last-kbd-macro give name to macro (for saving)
M-x insert-keyboard-macro save named macro into file
M-x load-file load macro
M-x macroname execute macroname


Coding
M C-\  indent region between cursor and mark
M-m    move to first (non-space) char in this line
M-^    attach this line to previous
M-;    format and indent comment


C, C++ and Java Modes
M-a    beginning of statement
M-e    end of statement
M C-a  beginning of function
M C-e  end of function
C-c RETURN Set cursor to beginning of function and mark at the end
C-c C-q indent the whole function according to indention style
C-c C-a toggle modus in which after electric signs (like {}:';./*) emacs does the indention
C-c C-d toggle auto hungry mode in which emacs deletes groups of spaces with one del-press
C-c C-u go to beginning of this preprocessor statement
C-c C-c comment out marked area


General
M-x outline-minor-mode collapses function definitions in a file to a mere {...}
M-x show-subtree If you are in one of the collapsed functions, this un-collapses it
In order to achive some of the feats coming up now you have to run etags *.c *.h *.cpp (or what ever ending you source files have) in the source directory
M-. (Thats Meta dot) If you are in a function call, this will take you to it's definition
M-x tags-search ENTER Searches through all you etaged
M-, (Meta comma) jumps to the next occurence for tags-search
M-x tags-query-replace yum. This lets you replace some text in all the tagged files

Gnu Debugger
M-x gdb starts gdm in an extra window

Version Control
C-x v d show all registered files in this dir
C-x v = show diff between versions
C-x v u remove all changes since last checkin
C-x v ~ show certain version in different window
C-x v l print log
C-x v i mark file for version control add
C-x v h insert version control header into file
C-x v r check out named snapshot
C-x v s create named snapshot
C-x v a create changelog file in gnu-style