Emacs complete command list

Emacs Commands List 

C = Control
M = Meta = Alt|Esc

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

Basic movement
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

M-n repeat the following command n times
C-u repeat the following 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-Space Set beginning mark (for region marking for example)
C-W “kill” (delete) the marked region region
M-W copy the marked region
C-y “yank” (paste) the copied/killed region/line
M-y yank earlier text (cycle through kill buffer)
C-x C-x exchange cursor and mark

C-t transpose two chars
M-t transpose two words
C-x C-t transpose lines
M-u make letters uppercase in word from cursor position to end
M-c simply make first letter in word uppercase
M-l opposite to M-u

C-g quit the running/entered command
C-x u undo previous action
M-x revert-buffer RETURN (insert like this) undo all changes since last save
M-x recover-file RETURN Recover text from an autosave-file
M-x recover-session RETURN if you edited several files

C-h c which command does this keystroke invoke
C-h k which command does this keystroke invoke and what does it do?
C-h l what were my last 100 typed keys
C-h w what key-combo does this command have?
C-h f what does this function do
C-h v what’s this variable and what is it’s value
C-h b show all keycommands for this buffer
C-h t start the emacs tutorial
C-h i start the info reader
C-h C-k start up info reader and go to a certain key-combo point
C-h F show the emacs FAQ
C-h p show infos about the Elisp package on this machine

C-s Search forward
C-r search backward
C-g return to where search started (if you are still in search mode)
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 with regular expressions
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

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

Bookmark commands
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

mark bookmark for deletion
rename bookmark
save all listed bookmarks
show bookmark the cursor is over
mark bookmarks to be shown in multiple window
show marked bookmarks (or the one the cursor is over)
toggle listing of the corresponding paths
” path to this file
delete marked bookmarks
Del ?
quit bookmark list

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

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

DIRectory EDitor (dired)
C-x d start up dired
(large C) copy
mark for erase
delete right away
e or f open file or directory
reread directory structure from file
change group permissions (chgrp)
delete line from listing on screen (don’t actually delete)
mark with *
move to next line
open file in other window and go there
C-o open file in other window but don’t change there
print file
quit dired
do query-replace in marked files
rename file
remove mark
view file content
delete files marked with D
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
toggle between sorting by name or date

Maybe into this category also fits this command:
M-x speedbar starts up a separate window with a directory view

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

Works only in text mode
M-s center line
M-S center paragraph
M-x center-region name says

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

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-; formatize 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
More general (I guess)
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

GDB (Debugger)
M-x gdb starts up 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

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Display line numbers in emacs, and more

Display line numbers in emacs

Add the following to the end of your ~/.emacs file:

(global-linum-mode t)

Increase/Set font size in Emacs

(set-face-attribute 'default nil :height 100)[/code]
The default is 1/10, so height of 100=10.

So for font size 12:
(set-face-attribute 'default nil :height 120)


Remove split window in Emacs on opening up:

;; open with single window
(setq inhibit-startup-screen t)
(add-hook 'emacs-startup-hook 'delete-other-windows)[/code]


My emacs file has the following:
;; open with single window
(setq inhibit-startup-screen t)
(add-hook 'emacs-startup-hook 'delete-other-windows)
;; line number each line on left
(global-linum-mode t)
;; Set font size 12
(set-face-attribute 'default nil :height 120)

System copy and paste in Emacs:

I'm going to plaguarize Chris Conway's  StackOverflow post and quote this here:

Let's be careful with our definitions here

  • An Emacs copy is the command kill-ring-save (usually bound to META-W).
  • system copy is what you typically get from pressing CTRL-C (or choosing "Edit->Copy" in a application window).
  • An X copy is "physically" highlighting text with the mouse cursor.
  • An Emacs paste is the command yank (usually bound to CTRL-Y).
  • system paste is what you typically get from pressing CTRL-V (or choosing "Edit-Paste" in an application window).
  • An X paste is pressing the "center mouse button" (simulated by pressing the left and right mouse buttons together).

In my case (on GNOME):

  • Both Emacs and system copy usually work with X paste.
  • X copy usually works with Emacs paste.
  • To make system copy work with Emacs paste and Emacs copy work with system paste, you need to add (setq x-select-enable-clipboard t) to your .emacs. Or try
    META-X set-variable RET x-select-enable-clipboard RET t [/code]

I think this is pretty standard modern Unix behavior.

It's also important to note (though you say you're using Emacs in a separate window) that when Emacs is running in a console, it is completely divorced from the system and X clipboards: cut and paste in that case is mediated by the terminal. For example, "Edit->Paste" in your terminal window should act exactly as if you typed the text from the clipboard into the Emacs buffer.

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Emacs – Shortcut – Jump to line no

There are two shortcuts:

Either: Alt-GG (M-g-g)


M-x and type “goto-line”

Stylesen has ingeniously provided a way to use an Alternate key for this. He has chosen Ctrl-l for the Jump to line No Shortcut, which requires the following in the file ~/.emacs:

;; Goto-line short-cut key                                                                                                   
(global-set-key "\C-l" 'goto-line)

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Working with Multiple Windows on Emacs

Split a window into two horizontally: [Ctrl-X] [3]
Split a window into two vertically: [Ctrl-X] [2]
Switch to [O]ther Window : [Ctrl-X] [O] Oh, not zero

Delete current window (remove split) : Ctrl-X 0 This is Ctrl+X and a Zero

My custom emacs file:
Options added are custom color, removed the split window on start.

(add-to-list 'load-path "/path/to/color-theme.el/file")
(require 'color-theme)
(eval-after-load "color-theme"
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(inhibit-startup-screen t))
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:inherit nil :stipple nil :background "black" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 140 :width normal :foundry "unknown" :family "Droid Sans Mono")))))

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Copying and pasting between Emacs and other Linux apps

Copy to Emacs clipboard with:
Ctrl-[Space] : Set marker (start/stop)
Alt-[W] : Copy to Clipboard
Ctrl-[W] : Kill to Clipboard (cuts from original position and places it in clipboard)
Ctrl-[Y] : Yank or Paste at current position from Emacs Clipboard

[Middle Mouse Click] – Paste in Another Application from Emacs Clipboard

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Remove startup split screen in Emacs

Edit your ~/.emacs file to add the following at the end:

;; open with single window
(setq inhibit-startup-screen t)
(add-hook 'emacs-startup-hook 'delete-other-windows)

Note: If ~/.emacs doesnt exist, just create it and paste the above code in it. On restarting Emacs, you’ll notice that the split window has disappeared.

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Split window on Emacs

Ctrl+2 Splits window
Ctrl+1 Maximizes a split window

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Emacs search text

Ctrl-S – Search text prompt
– Search again

Further reading:

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.