This page shows you how to set up emacs so its user interface is more similar to modern applications.
The following guide assume you are using GNU Emacs version 23.2 () or later. 〔➤ New Features in Emacs 23〕
If you want a out-of-the-box solutions, you can download: ErgoEmacs (Windows), Aquamacs Emacs (Mac).
How to have standard keys for Copy ＆ Paste?
Turn on the CUA mode. Put the following in your emacs init file:
The CUA mode will do 4 things:
How to have standard shortcut keys for Open, Close, Save, Save As, Select All …?
Install the package
ergoemacs-mode. (it also supports 【Ctrl+c】 for copy, etc. No need to turn on
How to have redo?
You need to install a redo mode. See: Emacs: Best Undo/Redo Mode.
How to make the copy key copy the current line when there's no selection?
See: Emacs: How to Copy/Cut Current Line. (it's part of ergoemacs-mode.)
How to auto-insert/close bracket pairs?
How to have emacs highlight text selections?
Put this in your emacs init file:
(transient-mark-mode 1) ; highlight text selection (delete-selection-mode 1) ; delete seleted text when typing
Starting with Emacs 23.2,
transient-mark-mode is on by default. 〔➤ New Features in Emacs 23〕
How to have syntax coloring on by default?
This is on by default starting with emacs 22 (released in 2007). If not on, put the following in your emacs init file:
(global-font-lock-mode 1) ; turn on syntax coloring
How to have matching parenthesis highlighted? (when the cursor is on one)
Put the following code in your emacs init file:
(show-paren-mode 1) ; turn on paren match highlighting (setq show-paren-style 'expression) ; highlight entire bracket expression
How to have auto syntax color CSS hex color?
rainbow-mode or see: Emacs: Working with CSS Color Values.
How to change the default font?
;; set a default font (when (member "DejaVu Sans Mono" (font-family-list)) (set-face-attribute 'default nil :font "DejaVu Sans Mono"))
For detail, see: Emacs: How to List ＆ Set Font.
How to show line numbers?
You can have line numbers displayed in the left vertical margin. To turn it on, call
linum-mode. To have it on by default, put the following in your emacs init file:
(global-linum-mode 1) ; display line numbers in margin. New in Emacs 23
How to show the cursor's column position?
column-number-mode. After you turned it on, the cursor's line position and column position will show in the status bar, like this:
(166,3). The first is line number, the second is position from the beginning of line.
To always have it on, put the following code in your emacs init file.
How to make emacs stop creating those “backup~” files or “#autosave#” files?
Put the following in your emacs init file.
(setq make-backup-files nil) ; stop creating backup~ files (setq auto-save-default nil) ; stop creating #autosave# files
How to open recently opened file in emacs?
recentf-mode to turn it on.
recentf-open-files to list and open recently opened file.
You can give it a keyboard shortcut.
〔➤ Emacs: How to Define Keys〕
To turn it on for future sessions, put this in your emacs init file:
(recentf-mode 1) ; keep a list of recently opened files
How to restore opened files from last session?
You need to have
(desktop-save-mode 1) ; save/restore opened files
How to setup tabs, space, indentation?
How to turn on ruler?
How to show tabs as in web browser?
You need to install
You can get it from MELPA repository. Call
〔➤ Emacs: How to Install Packages Using ELPA, MELPA, Marmalade〕.
You can also install “tabbar-ruler” to make it pretty.
How to have the down arrow key move by screen lines?
This is default with emacs 23. 〔➤ New Features in Emacs 23〕
(setq line-move-visual nil) ; use t for true, nil for false
How to have lines soft wrapped at word boundary?
Pull the menu 〖Options ▸ Line Wrapping in this Buffer〗, or call
To toggle globally, call
global-visual-line-mode. To set it on or off permanently, use:
(global-visual-line-mode 1) ; 1 for on, 0 for off.
For detail, see: Emacs: Visual Line Mode, Wrap Lines at Word Boundaries.
How to adjust margin?
You can use this command:
(defun xah-toggle-margin-right () "Toggle the right margin between `fill-column' or window width. This command is convenient when reading novel, documentation." (interactive) (if (eq (cdr (window-margins)) nil) (set-window-margins nil 0 (- (window-body-width) fill-column)) (set-window-margins nil 0 0) ) )
How to make lines NOT soft-wrap?
Note: the command name is misleading. It doesn't really truncate lines. Proper name would be “toggle-softwrap”.
How to set the spacing between lines?
Put the following elisp code in your emacs init file for easy toggle.
(defun xah-toggle-line-spacing () "Toggle line spacing between no extra space to extra half line height." (interactive) (if (eq line-spacing nil) (setq line-spacing 0.5) ; add 0.5 height between lines (setq line-spacing nil) ; no extra heigh between lines ) (redraw-frame (selected-frame)))
This is useful for switching between reading source code and reading novels. 〔➤ Emacs: Novel Reading Mode〕
Note that the spacing height between lines also depends on font. See: Emacs: How to List ＆ Set Font.
How to reformat paragraphs so that lines are not longer than 70 chars?
fill-paragraph 【Alt+q】 to reformat the current block of text your cursor is on. Call
fill-region to reformat a text selection.
To have emacs automatically insert a newline char when your line reaches to the right, call
You can set the width used in the above commands. Call
set-variable, then given variable fill-column.
Note: these commands actually insert newline characters into your file. This type of wrapping is called hard-wrap. Hard-wrap convention of 80 chars came from Punched card. You should avoid hard-wrap when possible; add newline char only at logical positions. (Rant: The Harm of hard-wrapping Lines.)
Is there a unfill-paragraph? I want to remove line-break in a paragraph.
How to have cursor line always highlighted?
hl-line-mode to toggle on/off.
global-hl-line-mode to toggle globally.
(global-hl-line-mode 1) ; turn on highlighting current line
How to have fixed scroll?
scroll-lock-mode. When on, up/down arrow keys move the page, instead of the cursor.
This only turns it on in current buffer.
How to set cursor to i-beam?
(modify-all-frames-parameters (list (cons 'cursor-type 'bar)))
How to set up emacs so that each file opens in a new window?
Put this code in your emacs init file:
(setq pop-up-frames t) ; t for true, nil for false
How to make emacs use dark background color (reverse video)?
Start emacs with
emacs --reverse-video. (
-rv for short.)
This is useful when working in bright sunlight. See also: Emacs: Playing with Color Theme.
Thanks to Ivan Kozik for a tip.
Emacs: Stop Cursor Going into Minibuffer Prompt
Emacs: Save Cursor Position Across Sessions
Emacs Lisp: Open File in External App
Emacs: How to Set Mouse Buttons ＆ Wheel.